2012-02-25 4 views
0

Я пытаюсь загрузить некоторые данные в webservise в .net, используя javascript ksoap на Android. Я стараюсь работать, но без успеха. результат нулевой, и я понятия не имею, почему это произойдет код, который я использую последующие:complex ksoap in android java

XML веб-сервис

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
    <AddBloodPressure xmlns="http://tempuri.org/"> 
     <PatientID>int</PatientID> 
     <BloodPressure> 
     <Sistolic>int</Sistolic> 
     <Distolic>int</Distolic> 
     </BloodPressure> 
     <DateTimeStamp>dateTime</DateTimeStamp> 
    </AddBloodPressure> 
    </soap:Body> 
</soap:Envelope> 

KvmSerializable код

public class Category implements KvmSerializable 
{ 
    public int Distolic; 
    public int Sistolic; 



    public int getDistolic() { 
     return Distolic; 
    } 
    public void setDistolic(int distolic) { 
     Distolic = distolic; 
    } 

    public int getSistolic() { 
     return Sistolic; 
    } 
    public void setSistolic(int sistolic) { 
     Sistolic = sistolic; 
    } 



    public Object getProperty(int arg0) { 

     switch(arg0) 
     { 
     case 0: 
      return getSistolic(); 
     case 1: 
      return getDistolic(); 

     } 

     return null; 
    } 

    public int getPropertyCount() { 
     return 3; 
    } 

    public void getPropertyInfo(int arg0, Hashtable arg1, PropertyInfo info) { 
     switch(arg0) 
     { 
     case 0: 
      info.type = PropertyInfo.INTEGER_CLASS; 
      info.name = "Sistolic"; 
      break; 
     case 1: 
      info.type = PropertyInfo.INTEGER_CLASS; 
      info.name = "Distolic"; 
      break; 
     default:break; 
     } 
    } 

    public void setProperty(int arg0, Object arg1) { 
     switch (arg0) 
     { 
     case 0: 
      this.Sistolic = Integer.parseInt(arg1.toString()); 
      break; 
     case 1: 
      this.Distolic=Integer.parseInt(arg1.toString()); 
      break; 

     } 
    } 
} 

и мой основная:

SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);  
     request.addProperty("PatientId", "8"); 
     Category i1=new Category(); 
      i1.setDistolic(100); 
     i1.setSistolic(100); 
     PropertyInfo pi=new PropertyInfo(); 
     pi.setName("BloodPressure"); 
     pi.setValue(i1); 
    pi.setType(i1.getClass()); 
    request.addProperty(pi);       request.addProperty("DateTimeStamp","2012-01-13"); 
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
    envelope.dotNet=true; 
    envelope.setOutputSoapObject(request); 
     HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 
     androidHttpTransport.call(SOAP_ACTION, envelope); 

    Object result=((Object)envelope.getResponse()); 
    String resultString=new String(result.toString()); 

} 

ok. это то, что я использую. кто-нибудь знает, как это можно исправить?

ответ

0

Я верю, что свойство timestamp неверно. Ususally .net формат WebServices для отметки времени что-то вроде

yyyyMMddThhmmss 

я не могу вспомнить точный синтаксис

+0

на самом деле я не уверен. я уже использую одну и ту же метку времени с другими более легкими веб-сервисами, и она работает без проблем. поэтому я не знаю, что это проблема. на самом деле я не знаю, была ли ошибка – prokopis

+0

, вы можете попробовать добавить androidHttpTransport.debug = true ;, затем вызвать httpTransport.requestDump, чтобы проверить, нормально ли это запрос (это делается до androidHttpTransport.call (SOAP_ACTION, конверт); ) – mihail

+0

httpTransport.requestDump это возвращает мне null. что это значит. я понятия не имею, в чем проблема. верны тем, как я выполняю правила веб-службы. на том же xml у меня есть 2 простых запроса и 1 комплекс. правильны, как я их реализую? – prokopis