2013-04-20 191 views
0

我是新來的Web服務,但一些如何設法在閱讀一些文檔後創建一個Web服務。 我能夠得到wsdl文件還與下游的熱點: //?wsdl。 生成的WSDL也包含我的方法(API的),我能夠用SOAP UI測試。 但現在我需要在瀏覽器中獲得響應,所以我決定使用HTTP客戶端作爲休閒方式: -使用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線總是空的。可能是什麼原因。請幫助我。

+0

帶有WSDL的Web服務意味着一個SOAP服務,但您並未進行SOAP客戶端調用,我在這裏是否缺少某些東西? – 2013-04-20 13:15:02

回答

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); 
} 
+0

感謝您的快速respnse.My問題在這裏是我無法調用getCustomerAttributesById方法本身。我已經包括在這個方法內的一些chcekpoints,以確保它是否在被調用或不是。但它根本不是調用。 – user2011353 2013-04-20 07:03:20

0

這看起來像它應該工作,如果URL是正確的,並且服務實際上返回的東西。您可能想檢查響應狀態並查看它是否實際返回200(OK)。或者將該URL粘貼到瀏覽器中,然後查看返回的內容。

如果一切都失敗了,您可能需要打開httpclient的調試日誌記錄。 http://hc.apache.org/httpcomponents-client-ga/logging.html

順便說一句。你可能想考慮使用ResponseHandler,你的代碼可能無法正確釋放連接。