2013-04-20 3 views
0

Я новичок в веб-сервисах, но некоторые из них сумели создать веб-сервис после прочтения некоторых документов. Я могу получить файл wsdl также с повязкой: //? Wsdl. Созданный WSDL также содержит мои методы (API), и я могу проверить их с помощью интерфейса SOAP. Но теперь мне нужно получить ответ в браузере, поэтому я решил использовать 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 подразумевает использование SOAP-сервиса, но вы не вызываете клиентский вызов SOAP, я что-то пропустил здесь? –

ответ

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

Спасибо за ваше быстрое решение. Моя проблема заключается в том, что я не могу вызвать метод getCustomerAttributesById. У меня есть некоторые chcekpoint внутри этого метода, чтобы убедиться, что он вызван или нет. Но он вообще не вызывает. – user2011353

0

Похоже, что он должен работать, если URL-адрес верен, и служба фактически что-то возвращает. Вы можете проверить статус ответа и посмотреть, действительно ли он возвращает 200 (OK). Альтернативно вставьте URL-адрес в браузере и посмотрите, что вернется.

Если все остальное не удается, вы можете включить ведение журнала отладки для httpclient. http://hc.apache.org/httpcomponents-client-ga/logging.html

BTW. вы можете захотеть использовать ResponseHandler, ваш код не сможет правильно освободить соединение.

Смежные вопросы