私は以下のプロセスを使用しています、
1)SOAPリクエスト用の文字列テンプレートを作成し、実行時にこのテンプレートでユーザー指定の値を置き換えて、有効なリクエストを作成します。2) この文字列を StringEntity でラップし、そのコンテンツ タイプを text/xml に設定します。3) このエンティティを SOAP リクエストに設定します。
httppost の助けを借りて、リクエストを投稿しています。
w3schools.com のデモ Web サービスを使用しています
URL--->
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 要求を行っていますか?たくさん試しましたが、わかりませんでした。
ありがとう