我构建了一个完整的肥皂信封soapEnvelopeXML
,我可以通过我的TCP / IP监视器看到呼叫,但问题是,请求URI不是调用正确的方法,而是与{ {1}}好像它是标题中的一个选项。所以我没有得到任何结果。我不想将参数作为JSON对象传递。关于我可能出错的任何想法?
soapEnvelopeXML
我已经测试了顶部的代码以使用POST而不是GET但是我得到了一个空的响应,我看到正在进行一个空的webservice调用。我不知道GET对于SOAP请求是非法的。有谁知道为什么发送的内容是空话?
答案 0 :(得分:1)
问题可能是SOAP应该是POST吗?
http://www.coderanch.com/t/463869/Web-Services/java/SOAP-request-as-HTTP
问:如何将HTTP请求作为HTTP GET发送?
答:你不能。 SOAP总是使用POST。只有REST使用GET(以及各种其他HTTP方法,包括POST)。
多亏了这个,我正在使用GET,因为当我使用POST时发出了一个空的Web服务调用。那么我在使用POST时为什么要进行空的Web服务调用的想法呢?
我在本地方框上遇到了相同的行为如果我转到localhost ,但我通过这样做得到了它:
127.0.0.1
试试这段代码,它对我有用:
var soapEnvelopeXML= "<soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\"> <soap:Header>CUSTOM HEADER</soap:Header> <soap:Body>PARAMS</soap:Body> </soap:Envelope>";
$.ajax({
type: "post",
url: "http://superblah.com/webservice/serviceName/",
contentType: "text/xml; charset=\"utf-8\"",
dataType: "xml",
data: soapEnvelopeXML,
processData: false,
beforeSend: function(xhr){
xhr.setRequestHeader(
"SOAPTarget",
"http://superblah.com/webservice/serviceName/"
);
xhr.setRequestHeader(
"SOAPAction",
"http://superblah.com/webservice/serviceName/Something"
);
},
error: function(xhr, status, error) {
alert("Error processing your request: \n" + status + " : " + error);
},
success: function(response){
var xml = $(response);
alert(xml);
}
});
我从这里得到了这段代码:
答案 1 :(得分:0)
它与URL连接的原因是GET
方法的含义。
将此更改为POST,我怀疑它适合您。
答案 2 :(得分:0)
$.ajax({ type: "POST", url: "http://localhost:8080/webservice/serviceName/", data: soapEnvelopeXML, contentType: "text/xml", dataType: ($.browser.msie) ? "text" : "xml", error: function(xhr, status, error) { alert("Error processing your request: \n" + status + " : " + error); }, success: function(response){ var xml = $(response); alert(xml); } });