java - SoapException : Server did not recognize the value of HTTP Header SOAPAction

标签 java web-services soap apache-axis

我正在尝试向此 web service 发送请求为了得到响应: 这是我的java代码

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;

public class TestClient {
    public static void main(String[] args) {
        try {

            String endpoint ="http://www.webservicex.net/geoipservice.asmx";
            Service service = new Service();
            Call call = (Call) service.createCall();

            call.setTargetEndpointAddress(new java.net.URL(endpoint));
            call.setOperationName(new QName("http://www.webservicex.net/","GetGeoIP"));

            String response = (String) call.invoke(new Object[] { "192.168.1.8" });

            System.out.println("The response is : " + response);
        } catch (Exception e) {
            System.err.println(e.toString());
        }
    }
}

当我运行这段代码时,我得到了这个soapException:

Server did not recognize the value of HTTP Header SOAPAction:

谁能帮我解决这个问题吗?

最佳答案

当 ws 主机值与命名空间值不同时,可能会发生这种情况,如下所示:

<wsdl:definitions xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://www.hostname.com/example" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://www.namespace.com/example" slick-uniqueid="3">

因此,如果您尝试发送请求的 Web 服务被移动,有时它们只会更改主机而不是命名空间。

为了将“example”与 Axis 一起使用,您必须更新主机值而不是命名空间值。它应该看起来像这样

ExampleLocator.java

类(因为定位器类是您在轴中设置主机的位置):

ExampleSoap_address = "http://www.hostname.com/xxx/example.asmx "

命名空间值应保持如下所示:

targetNamespace="http://www.namespace.com/example"

但有保证的方法是从头开始重新创建 stub ,检查代码中新主机名值的用法并更新这些用法的旧代码。

关于java - SoapException : Server did not recognize the value of HTTP Header SOAPAction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28362455/

相关文章:

java - 除非在双引号中,否则在空格上拆分字符串,但双引号可以附加一个前面的字符串

web-services - 什么是对 WSDL 契约的非破坏性或向后兼容的更改?

c# - 在 C# 中使用 SOAP API 调用无需代理的 Web 服务

soap - 如何在 Switchyard 中公开现有的 wsdl

api - 我应该为外部链接使用哪种 Magento Soap V2 方法?

java - 附加到文件时,如果条件总是失败

java - 如何重用抛出异常的过程?

java - Struts异常

http - 使用具有相同值的重复响应 header 可以吗?

c# - 使用 C# 通过 Web 服务获取 SharePoint 列表可见列名称