Java 使用Http客户端

Java 使用Http客户端,java,web-services,http,httpclient,Java,Web Services,Http,Httpclient,我对web服务还不熟悉,但在阅读了一些文档后,我知道如何创建web服务。 我还可以使用fallowing loaction获取wsdl文件: /?wsdl. 生成的WSDL还包含我的方法(API),我能够用SOAP UI测试相同的方法。 但现在我需要在浏览器中获取响应,所以我决定使用HTTP客户端作为休耕:- HttpClient HttpClient=新的DefaultHttpClient() HttpGet-getRequest=new-HttpGet( "http:////getCusto

我对web服务还不熟悉,但在阅读了一些文档后,我知道如何创建web服务。 我还可以使用fallowing loaction获取wsdl文件: /?wsdl. 生成的WSDL还包含我的方法(API),我能够用SOAP UI测试相同的方法。 但现在我需要在浏览器中获取响应,所以我决定使用HTTP客户端作为休耕:-

HttpClient HttpClient=新的DefaultHttpClient()

HttpGet-getRequest=new-HttpGet(
"http:////getCustomerAttributesById?CustomerId=60000");
HttpResponse response=httpClient.execute(getRequest);
BufferedReader rd=新的BufferedReader
(新的InputStreamReader(response.getEntity().getContent());
字符串行=”;
而((line=rd.readLine())!=null){
系统输出打印项次(“o/p行:”+行);
} 

但o/p线总是空的。原因可能是什么。请帮助我。

您可以尝试设置http连接的超时。下面是示例代码

HttpGet getRequest = new HttpGet(
"http://<localhost>/<serviceName>/getCustomerAttributesById?CustomerId=60000");

HttpParams httpParameters = new BasicHttpParams();
int timeout = 50000;
HttpConnectionParams.setConnectionTimeout(httpParameters, timeout);
HttpConnectionParams.setSoTimeout(httpParameters, timeout);

DefaultHttpClient httpClient = new DefaultHttpClient(httpParameters);
HttpResponse response = httpClient.execute(getRequest);

BufferedReader rd = new BufferedReader
  (new InputStreamReader(response.getEntity().getContent()));

String line = "";
while ((line = rd.readLine()) != null) {
  System.out.println("o/p Line:"+line);
} 
HttpGet-getRequest=new-HttpGet(
"http:////getCustomerAttributesById?CustomerId=60000");
HttpParams httpParameters=新的BasicHttpParams();
int超时=50000;
HttpConnectionParams.setConnectionTimeout(httpParameters,超时);
HttpConnectionParams.setSoTimeout(httpParameters,超时);
DefaultHttpClient httpClient=新的DefaultHttpClient(httpParameters);
HttpResponse response=httpClient.execute(getRequest);
BufferedReader rd=新的BufferedReader
(新的InputStreamReader(response.getEntity().getContent());
字符串行=”;
而((line=rd.readLine())!=null){
系统输出打印项次(“o/p行:”+行);
} 

如果url是正确的,并且服务实际返回了一些内容,那么它看起来应该可以工作。您可能需要检查响应状态,看看它是否实际返回200(OK)。或者将URL粘贴到浏览器中,然后查看返回的内容

如果所有其他操作都失败,您可能希望打开httpclient的调试日志记录


<> BTW.,您可能想考虑使用响应处理程序,您的代码可能无法正确释放连接。

感谢您的快速响应。我的问题是我无法调用getCustomerAttributesById方法本身。我在该方法中包含了一些chcekpoints,以确保它是否被调用。但它根本没有被调用。带有WSDL的web服务意味着SOAP服务,但您不是在进行SOAP客户端调用,我是不是遗漏了什么?
HttpGet getRequest = new HttpGet(
"http://<localhost>/<serviceName>/getCustomerAttributesById?CustomerId=60000");

HttpParams httpParameters = new BasicHttpParams();
int timeout = 50000;
HttpConnectionParams.setConnectionTimeout(httpParameters, timeout);
HttpConnectionParams.setSoTimeout(httpParameters, timeout);

DefaultHttpClient httpClient = new DefaultHttpClient(httpParameters);
HttpResponse response = httpClient.execute(getRequest);

BufferedReader rd = new BufferedReader
  (new InputStreamReader(response.getEntity().getContent()));

String line = "";
while ((line = rd.readLine()) != null) {
  System.out.println("o/p Line:"+line);
}