如何设置 DefaultHttpClient 接受特殊内容类型

问题描述 投票:0回答:1

我使用 DefaultHttpClient 扫描 LAN 以查找地址。一些计算机提供 OData (WCF) 服务。网址看起来像这样:

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

如果我在浏览器中打开它,它会显示 XML。

如果我尝试连接到没有计算机的地址,我会得到标准的 404 作为状态码。如果我找到一台可用的计算机,我会得到一个 405 代码,这是一个 Method Not Allowed,根据这个我应该设置一些东西:

Request-Line 中指定的方法不允许用于Request-URI 标识的资源。响应必须包含一个允许标头,其中包含所请求资源的有效方法列表。

我想获得 200 而不是 405 的状态代码。我应该为 DefaultHttpClient 设置什么以接受 xml 作为内容?

这是我使用的代码(基于kuester2000this answer):

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...
}
android content-type android-networking
1个回答
0
投票

URL 是问题所在。它看起来像这样:

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

当我修改成这样的时候:

http://someurl/Service/Service.svc

我的状态码是 200.

© www.soinside.com 2019 - 2024. All rights reserved.