-1

DefaultHttpClient を使用して LAN をスキャンし、アドレスを見つけます。一部のコンピューターは、OData (WCF) サービスを提供します。URL は次のようになります。

http://someurl/Service/Service.svc/

ブラウザーで開くと、XML が表示されます。

コンピューターがないアドレスに接続しようとすると、ステータス コードとして標準の 404 が返されます。使用可能なコンピューターが見つかった場合、Method Not Allowedである 405 コードが表示されます。これに従って、何かを設定する必要があります。

Request-URI で識別されるリソースに対して、Request-Line で指定されたメソッドは許可されていません。応答には、要求されたリソースの有効なメソッドのリストを含む Allow ヘッダーが含まれている必要があります。

405 ではなく 200 のステータス コードを取得したいのですが、DefaultHttpClient がコンテンツとして xml を受け入れるようにするには、何を設定すればよいですか?

私が使用するコードは次のとおりです。

DefaultHttpClient hc = new DefaultHttpClient();
HttpParams httpParameters = new BasicHttpParams();
// Set the timeout in milliseconds until a connection is established.
// The default value is zero, that means the timeout is not used.
int timeoutConnection = 700;
HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
// Set the default socket timeout (SO_TIMEOUT)
// in milliseconds which is the timeout for waiting for data.
int timeoutSocket = 700;
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
hc.setParams(httpParameters);
HttpPost hp = new HttpPost(url);
HttpResponse hr= hc.execute(hp);
if (hr.getStatusLine().getStatusCode() == 405) {
    // Do something...
}
4

1 に答える 1

0

URLが問題でした。次のように見えました。

http://someurl/Service/Service.svc/

私がこれに変更したとき:

http://someurl/Service/Service.svc

ステータス コードは 200 です。

于 2013-09-15T12:23:03.340 に答える