我使用DefaultHttpClient扫描LAN以查找地址。某些计算机提供OData(WCF)服务。网址如下所示:
http://someurl/Service/Service.svc/
如果我在浏览器中打开它,它会显示XML。
如果我尝试连接到没有计算机的地址,我会将标准404作为状态代码。如果我找到一台可用的计算机,我会得到一个405代码,这是一个 Method Not Allowed ,根据这个我应该设置一些东西:
Request-URI标识的资源不允许使用Request-URI中指定的方法。响应必须包含一个Allow标头,其中包含所请求资源的有效方法列表。
我想获取200而不是405的状态代码。我应该为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...
}
答案 0 :(得分:0)
网址是问题所在。它看起来像这样:
http://someurl/Service/Service.svc/
当我修改为:
http://someurl/Service/Service.svc
我的状态代码为200。