0

我是 Web 服务的新手,但是在阅读了一些文档后,我是如何设法创建 Web 服务的。我还可以通过闲置的位置获取 wsdl 文件: //?wsdl。 生成的 WSDL 还包含我的方法(API),我可以使用 SOAP UI 进行测试。但是现在我需要在浏览器中获得响应,所以我决定使用 HTTP 客户端作为休闲方式:-

HttpClient httpClient = new DefaultHttpClient();

    HttpGet getRequest = new HttpGet(
    "http://<localhost>/<serviceName>/getCustomerAttributesById?CustomerId=60000");
    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);
    } 

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

4

2 回答 2

0

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

如果一切都失败了,您可能需要为 httpclient 打开调试日志记录。http://hc.apache.org/httpcomponents-client-ga/logging.html

顺便提一句。您可能要考虑使用 ResponseHandler,您的代码可能无法正确释放连接。

于 2013-04-20T13:06:14.497 回答
0

您可以尝试在 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);
} 
于 2013-04-20T06:50:15.043 回答