我正在使用以下过程,
1) 为 SOAP 请求创建一个字符串模板,并在此模板中替换用户在运行时提供的值以创建一个有效的请求。2) 将此字符串包装在 StringEntity 中并将其内容类型设置为 text/xml 3) 在 SOAP 请求中设置此实体。
在 httppost 的帮助下,我发布了请求,
我正在使用来自 w3schools.com 的演示网络服务
网址--->
http://www.w3schools.com/webservices/tempconvert.asmx
我试过的是,
HttpPost httppost = new HttpPost("http://www.w3schools.com/webservices/tempconvert.asmx");
StringEntity se;
try {
SOAPRequestXML="<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:tem=\"http://tempuri.org/\"><soapenv:Header/><soapenv:Body><tem:CelsiusToFahrenheit><!--Optional:--><tem:Celsius>30</tem:Celsius></tem:CelsiusToFahrenheit></soapenv:Body></soapenv:Envelope>";
Log.d("request is ", SOAPRequestXML+"!!!");
se = new StringEntity(SOAPRequestXML,HTTP.UTF_8);
se.setContentType("text/xml");
httppost.setHeader("Content-Type","application/soap+xml;charset=UTF-8");
httppost.setEntity(se);
HttpClient httpclient = new DefaultHttpClient();
BasicHttpResponse httpResponse =
(BasicHttpResponse) httpclient.execute(httppost);
HttpEntity resEntity = httpResponse.getEntity();
t.setText(EntityUtils.toString(resEntity));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
我能够在soapui中得到响应,所以代码肯定是错误的,因为在模拟器中我得到了输出,
“服务器无法为请求提供服务,因为媒体类型不受支持”。
我是在 HttpPost 的构造函数中传递了正确的参数,还是发出了正确的 xml 请求。我尝试了很多但无法弄清楚。
谢谢