2012-06-24 4 views
1

У меня проблема с конвертом, созданным с использованием SoapSerializationEnvelope из ksoap2-android lib. Что мне нужно, чтобы получить (что сервер ожидает) является то, что:Настройка конверсии ksoap2-android

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soa="http://agh.edu.pl/soa"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <soa:getCompanyById> 
     <id>1</id> 
     </soa:getCompanyById> 
    </soapenv:Body> 
</soapenv:Envelope> 

То, что я на самом деле получить, что:

<v:Envelope xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:c="http://schemas.xmlsoap.org/soap/encoding/" xmlns:v="http://schemas.xmlsoap.org/soap/envelope/"> 
<v:Header /> 
<v:Body> 
    <n0:getCompanyById id="o0" c:root="1" xmlns:n0="http://agh.edu.pl/soa"> 
     <id i:type="d:int">5</id> 
    </n0:getCompanyById> 
</v:Body> 
</v:Envelope> 

Мои Java Код:

SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 

     PropertyInfo id = new PropertyInfo(); 
     id.setName("id"); 
     id.setValue(5); 
     id.setType(int.class); 
     request.addProperty(id); 

     SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
     envelope.setOutputSoapObject(request);  

     HttpTransportSE httpTransport = new HttpTransportSE(URL); 
     httpTransport.debug = true; 

     try { 
      httpTransport.call(request.getNamespace() + "/" + request.getName(), envelope); 
     } catch (Exception e) 
     { 
      System.out.println(httpTransport.requestDump); 
      System.out.println(httpTransport.responseDump); 
      System.out.println(e.getMessage()); 
     } 

Что мне нужно сделать меняет каждый v: что-то в soapenv: что-то и n0: getCompanyById в soa: getCompanyById. Есть идеи? Заранее спасибо. Cya

ответ

1

Эти конверты в основном одинаковые - они просто используют разные префиксы. Я бы предложил использовать что-то вроде SoapUI: шаг за шагом, изменить рабочий конверт на то, что вы получаете от кода. В тот момент, когда все идет плохо, вы узнаете, что вызывает проблему.

Из моего опыта i: type = "d: int" также может стать причиной проблемы.

+3

Как вы сказали, проблема была i: type = "d: int". Решение состоит в том, чтобы отличать значение в long: «id.setValue ((длинное) значение)». Мыло так отстало. Я надеюсь, что люди, которые его создали, будут гореть в аду. Thx, ты мой бог – pawelo

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

  • Нет связанных вопросов^_^