2012-02-25 12 views
0

アンドロイドのksoap javaを使用して.netのWebserviseにデータをアップロードしようとしています。 私はそれを成功させようと努力してきました。フォローされて結果がnullで、私は、これは 使用していたコードが起こるのはなぜ見当がつかない:android javaの複合ksoap

<?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; 

     } 
    } 
} 

とXML Webサービスである

私メインは:

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

タイムスタンププロパティが間違っていると思います。タイムスタンプのためのUsusallyに.NET Webサービスの形式は

yyyyMMddThhmmss 

のようなものは、私が実際に確認していない正確なsintax

+0

を思い出すことができないです。すでに他のより簡単なWebサービスで同じタイムスタンプを使用していて、問題なく動作します。だから私はこれが問題ではないということはしません。実際には私は気付いていませんでした。エラーは – prokopis

+0

でした。androidHttpTransport.debug = true;を追加してから、httpTransport.requestDumpを呼び出してリクエストがOKかどうかを確認してください(これはandroidHttpTransport.call(SOAP_ACTION、envelope); ) – mihail

+0

httpTransport.requestDumpはnullを返します。それはこれまでの意味です。私は問題が何であるか分かりません。 Webサービスのレギュレーションを行っている方法が正しいです。私は2つの単純な要求と1つの複合体を持っています。私はそれらを実装する方法は正しいですか? – prokopis

関連する問題