2012-09-20 2 views
0

HTTP 클라이언트를 사용하여 웹 서비스를 호출 할 수 있습니까?HTTP 웹 서비스

예인 경우 예를 들어주세요. 해당 웹 서비스에있는 메서드 목록을 어떻게 얻을 수 있습니까? 예를 들어

:

내가 사용하고이 Web Service WSDL link

이 두 가지 기능 FahrenheitToCelsius 및 CelsiusToFahrenheit을 가지고

참고 : 나는 웹 클라이언트를 사용하여 웹 서비스를 호출하는 방법을 알고 있지만 내가 호출을 수행 할 필요가 HTTP 클라이언트를 사용하여 webService

답변

0

웹 서비스가 HTTP 프로토콜에 노출되어있는 한 확실합니다. 그러나 직접 응답을 파싱하고 유효 요청을 직접 작성해야합니다. Apache Axis과 같은 프레임 워크를 사용하기가 훨씬 쉽습니다.

또한이 웹 서비스는 사용하려고 할 때 고려해야하는 SOAP 프로토콜을 사용하고 있습니다.

+0

아파치 엑시스 2를 사용하는 것이 다소 혼란 스럽습니다. 메소드 목록을 얻는 방법과 그 메소드에 매개 변수를 전달하는 방법을 제공 할 수 있습니다. – Bucks

2

예, 가능합니다. 예 : 아파치 HttpClient 4.2.1. 방법에 대한

import java.io.File; 
import java.io.IOException; 

import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.fluent.Content; 
import org.apache.http.client.fluent.Request; 
import org.apache.http.entity.ContentType; 

public class HttpClientPost { 
    public static void main(String[] args) throws ClientProtocolException, IOException { 
     String request = "<soapenv:Envelope response xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" " + 
      "xmlns:tem=\"http://tempuri.org/\"><soapenv:Header/><soapenv:Body>" + 
      "<tem:CelsiusToFahrenheit><tem:Celsius>100</tem:Celsius>" + 
      "</tem:CelsiusToFahrenheit></soapenv:Body></soapenv:Envelope>"; 
     Content response = Request.Post("http://www.w3schools.com/webservices/tempconvert.asmx") 
      .bodyString(request, ContentType.TEXT_XML).execute().returnContent(); 
     System.out.println("response: " + response); 
    } 
} 

는 WSDL 파일 내에서 작동 라는 요소를 살펴 봅니다.