2009-12-09 2 views
1

koap2를 사용하여 의 .net 웹 서비스를 호출하는 데 문제가 있습니다. 매개 변수없이 호출이 제대로 실행되지만 매개 변수를 전달할 때 웹 서비스는 단지 null 값을 수신합니다. 나는 가능한 모든 것을 시도했다. 그러나 지금까지 운 없음. 나는 클라이언트 측 코드는, 누군가가 도움을 수 있기를 바랍니다 :ksoap2를 사용하여 .net 웹 서비스에 매개 변수를 전달하면 항상 null (공백) 값이 전달됩니다.

public static boolean temp(){ 
      try { 

      SoapObject request = new SoapObject(NAMESPACE,METHOD_NAME_TEMP); 
      PopertyInfo p = new PropertyInfo(); 
      p.type = PropertyInfo.INTEGER_CLASS; 
      p.setName("num"); 
      p.setValue(5); 
      p.setNamespace(NAMESPACE); 
      request.addProperty(p) ; 
      SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
      envelope.dotNet = true; 
      envelope.encodingStyle = SoapSerializationEnvelope.ENC; 
      envelope.setOutputSoapObject(request); 
      AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport (URL); 
      androidHttpTransport.call(SOAP_ACTION_TEMP, envelope); 
    ..... 
      } 

    ..... 

답변

1

그냥 이런 식으로 나를 위해 잘 작동 ...

SoapObject requete = new SoapObject(NAMESPACE, METHOD_NAME); 

PropertyInfo propertyInfo = new PropertyInfo(); 
propertyInfo.type = PropertyInfo.INTEGER_CLASS; 
propertyInfo.name = "value"; 
requete.addProperty(propertyInfo, 2); 

SoapSerializationEnvelope enveloppe = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
enveloppe.dotNet = true; 
enveloppe.setOutputSoapObject(requete); 

내 비누 서버가 WCF 서비스입니다. 클라이언트는 Ksoap을 사용하는 안드로이드 에뮬레이터입니다.

0

webservice를 제어 할 수 있으면 webservice의 네임 스페이스 이름에서 http://을 제거하고 Java 코드의 모든 참조를 업데이트하십시오. 그것은 당신이 소비하는 자신의 웹 서비스가 아니라면 해결책이 아닙니다 (그렇기 때문에, 당신은 this workaround을 시도 할 수 있습니다) 그렇지 않으면 잘 작동하는 것처럼 보입니다.

1

이 문제가있어서 해결할 수 있습니다. "HTTP : //"

내 URL을했다 : + 그것을 해결하기위한 다음과 같은 설정을 고려해야한다 "MyIP에 : 80/PathTraceWS/SetPathToServer.asmx" (나는 때문에 유래 검증의 위와 URL을 보여 주었다)

웹 서비스 작업이었다 : SetData를

제대로 문제가 해결됩니다 위의 매개 변수를 설정하면 내가 믿는
String SOAP_ACTION= "http://"+"tempuri.org/SetData"; 
    String OPERATION_NAME="SetData"; 
    String WSDL_TARGET_NAMESPACE="http://"+tempuri.org/"; 
    String SOAP_ADDRESS="http://"+"192.168.1.54:80/PathTraceWS/SetPathToServer.asmx"; 

. 내 문제가 있었다 :

1- WSDL_TARGET_NAMESPACE을 설정하는 데에에 "http : //"+ "tempuri.org"없습니다 "HTTP : //"로 + "tempuri.org/"당신이 경우

2 안드로이드 모바일 에뮬레이터로 웹 서비스를 호출하면 localhost를 사용하지 말고 대신 시스템 IP를 사용해야합니다.

관련 문제