RESTful WCF サービスがあり、そのメソッドの 1 つがオブジェクトをパラメーターとして使用します
[WebInvoke(UriTemplate = "save", Method = "POST", RequestFormat = WebMessageFormat.Xml, ResponseFormat= WebMessageFormat.Xml), OperationContract]
public SampleItem Create(SampleItem instance)
{
return new SampleItem() { Id = 1, StringValue = "saved" };
// TODO: Add the new instance of SampleItem to the collection
//throw new NotImplementedException();
}
私はEclipse Androidプロジェクトからこのメソッドを呼び出そうとしています。私はこれらのコード行を使用しています
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost post=new HttpPost("http://10.0.2.2:2768/Service1.svc/save");
ArrayList<NameValuePair> nvp= new ArrayList<NameValuePair>();
nvp.add(new BasicNameValuePair("Id", "1"));
nvp.add(new BasicNameValuePair("StringValue", "yolo"));
post.setEntity(new UrlEncodedFormEntity(nvp));
HttpResponse httpResponse = httpClient.execute(post);
HttpEntity httpEntity = httpResponse.getEntity();
String xml = EntityUtils.toString(httpEntity);
Method not allowed.
サービスメソッドによって返される XML でこのエラーが発生するたびに。
ブラウザから起動しようとしましたが、そこで同じエラーが発生しました。
私が間違っていることと、代わりに何ができるか教えてください。
助けてくれる人に前もって感謝します。
注: パラメータとしてオブジェクトを使用しない他のメソッドは正常に動作しています。
編集: Fiddler2 を試して成功しました。しかしまた失速。
SampleItem Create(SampleItem instance)
URL を使用してメソッドを呼び出してみましたが、http://localhost:2768/Service1.svc/save
機能します。このメソッドはオブジェクトを XML 形式で返します。
フィドラーでは、リクエスト本文を次のように追加しました
<SampleItem xmlns="http://schemas.datacontract.org/2004/07/WcfRestService1" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><Id>1</Id><StringValue>saved</StringValue></SampleItem>
しかし問題は、この xml 文字列をrequestbody eclipse android プロジェクトとしてHttpPostまたはHttpRequestに追加する方法が見つからないことです。
注: xml 文字列をHeaderまたはUrlEncodedFormEntityとして渡すことは機能しませんでした。