0

Androidクライアント(Android 4.03)から.net Restサービス(WCF)にjson文字列を送信しようとしています。そして、応答として「BadRequest」を受け取りました。このサービス用の.NETテスターがあり、正常に動作します。

サーバーサイドコード:

[WebInvoke(UriTemplate = "submit", Method = "POST", RequestFormat = WebMessageFormat.Json)]
public bool SubmitPackage(string instance)
{      

 log.WriteWarning("Submit");
 return true;
}

私のWCF構成

<standardEndpoints>
    <webHttpEndpoint>
      <standardEndpoint name="" maxReceivedMessageSize="327680" helpEnabled="true" automaticFormatSelectionEnabled="false" defaultOutgoingResponseFormat="Json" transferMode="Buffered" />
    </webHttpEndpoint>
</standardEndpoints>

Androidクライアントの私のコード

HttpPost request2 = new HttpPost(URL_Submit);
request2.setHeader("content-type", "application/json");

JSONStringer json1 = new JSONStringer().object().key("instance")
                .value("hello world").endObject();


StringEntity entity1 = new StringEntity(json1.toString());
entity1.setContentType("application/json;charset=UTF-8");
entity1.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,
                "application/json;charset=UTF-8"));

request2.setEntity(entity1);
// Send request to WCF service
DefaultHttpClient httpClient = new DefaultHttpClient();
String response1 = httpClient.execute(request2)
4

1 に答える 1

0

WCF サービスは IIS でホストされていますか? 失敗したリクエストのロギングをオンにして、その結果を見てください。

また、フィドラーを使用して、送信されているトラフィックを確認します。サーバーで実行するようにフィドラーを構成できます。通常はクライアントで実行されますが、Android では実行できません。

サーバーで実行するようにフィドラーを構成するには、

http://www.fiddler2.com/fiddler/help/reverseproxy.asp

また、これをweb.configに入れることがよくあります。

<system.diagnostics>
    <sources>
      <source name="System.ServiceModel" switchValue="Information, ActivityTracing" propagateActivity="true">
        <listeners>
          <add name="traceListener" type="System.Diagnostics.XmlWriterTraceListener" initializeData="c:\logs\Traces.svclog" />
        </listeners>
      </source>
    </sources>
  </system.diagnostics>

リクエストに関連するエラーをログに記録します。これを開いて、リクエストを分析することができます。

于 2012-05-22T04:04:36.577 に答える