>  기사  >  Java  >  Java는 .NET에서 WebService 인스턴스를 어떻게 호출합니까?

Java는 .NET에서 WebService 인스턴스를 어떻게 호출합니까?

黄舟
黄舟원래의
2017-09-18 09:46:541461검색

아래 편집기는 .NET WebService를 호출하는 Java 클라이언트의 예를 제공합니다. 편집자님이 꽤 좋다고 생각하셔서 지금 공유하고 모두에게 참고용으로 드리고자 합니다. 편집기를 따라가서 살펴보겠습니다. 프로젝트는 Java인 .NET의 WebSrevice를 호출해야 합니다. 오랫동안 조사한 끝에 마침내 몇 가지 단서를 얻었고 이를 적어 두었습니다.

1. 새로운 .NET 웹 서비스를 만듭니다. 원래 메소드에 문자열 유형 매개변수 str

[WebMethod]
public string HelloWorld(string str)
{
  return "Hello World";
}

2을 추가하고, 새로운 Java WebService 클라이언트를 생성하고, 다음 5개의 jar 패키지를 lib에 도입하면 됩니다. (나는 idea에서 생성된 WebService 클라이언트를 사용했습니다. 7 패키지를 다운로드하고 log4j 및 saaj 패키지를 삭제하려고 시도했지만 여전히 정상적으로 실행됩니다.)

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
 
public class HelloWorldClient {
 public static void main(String[] argv) {
   String endpoint ="http://localhost:64662/WebService1.asmx?wsdl";
   try {
     // 定义服务
     Service service = new Service();
     Call call = (Call) service.createCall();
     call.setTargetEndpointAddress(endpoint);
     call.setOperationName(new QName("http://tempuri.org/", "HelloWorld"));
     call.setSOAPActionURI("http://tempuri.org/HelloWorld");
     call.addParameter(new QName("http://tempuri.org/", "str"),// 这里的str对应webservice参数名称
         XMLType.SOAP_STRING, ParameterMode.IN);
     call.setReturnType(XMLType.SOAP_STRING);
     String retVal1 = (String) call.invoke(new Object[] {"Hello World!"});
     System.out.println(retVal1);
   } catch (Exception e) {
     e.printStackTrace();
   }
 }
}

참고: 1 인터넷에서 call로 직접 작성하는 것을 보았습니다. setOperationName("HelloWorld"), 시도했지만 작동하지 않았습니다. 언어 문제 때문인지는 모르겠습니다.

2. 인터넷에서 call.setSOAPActionURI가 생략된 것을 봤는데 오류가 보고되었습니다.

3. 사실 프로젝트의 WebService에 사용된 매개변수는 XMLType을 통해 엔터티를 전달하려고 했습니다. 상당히 번거로운 온라인 솔루션이 있습니다. 엔터티를 Json으로 직렬화하고 이를 통과시켜 문제를 줄이는 것이 좋습니다.

4. 매개변수 네임스페이스는 서비스 페이지를 참조하세요

위 내용은 Java는 .NET에서 WebService 인스턴스를 어떻게 호출합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.