2011-08-01 18 views
0

AndroidコードからWebサービスを呼び出す際に問題が発生しました。私のweb service codeは区切り文字 '#'を間に挟んだ文字列を返します。Webサービスが呼び出されたときにAndroidコードが返されない

package com.app; 

import android.app.Activity; 
import android.app.AlertDialog; 
import android.content.DialogInterface; 
import android.os.Bundle; 
import android.widget.TextView; 
import org.ksoap2.SoapEnvelope; 
import org.ksoap2.serialization.SoapObject; 
import org.ksoap2.serialization.SoapSerializationEnvelope; 
import org.ksoap2.transport.HttpTransportSE; 

public class TestApp extends Activity { 
private static final String SOAP_ACTION = "http://tempuri.org/getData"; 




    private static final String METHOD_NAME = "getData"; 


    private static final String NAMESPACE = "http://tempuri.org/"; 
    private static final String URL = "http://10.0.2.2/login2/Service1.asmx"; 
    TextView tv; 

    boolean[] bln1=null; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     tv=(TextView)findViewById(R.id.text1); 

     call(); 

     String[] arr={""}; 
     boolean[] bln = {false, false, false}; 

     bln1 = new boolean[arr.length]; 


     new AlertDialog.Builder(TestApp.this) 
     .setIcon(R.drawable.alert_dialog_icon) 
     .setTitle("Title") 
     .setMultiChoiceItems(arr, 
       bln, 
       new DialogInterface.OnMultiChoiceClickListener() { 
        public void onClick(DialogInterface dialog, int whichButton, 
          boolean isChecked) { 


         if(isChecked){ 
          bln1[whichButton] = true; 
         } 
         else{ 
          bln1[whichButton] = false; 
         } 
        } 
       }) 
     .setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 


      } 
     }) 
     .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 


      } 
     }) 
     .show(); 


    } 




    public void call() 
    { 
     try { 

      SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 

      //request.addProperty("passonString", "Hello Android"); 



      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(); 


      tv.setText(result.toString()); 
     } catch (Exception e) { 
      tv.setText(e.getMessage()); 
      } 
    } 
} 
:今、私はここに私のAndroidのコードである

を選択するために、Webサービスを呼び出すAndroidの内のコードを作成したユーザのチェックボックスを使用して実際の名前が表示されるように区切り文字を分離する必要がありますケーシングの

+0

私は考えていないキャストObject result = (Object)envelope.getResponse();をobjectに 'result.toStringは()' SOAPレスポンスから、あなたの結果文字列を取得する方法です。右の小数値にアクセスする必要があります。 – ZeissS

+0

@ZeissS:結果オブジェクトに返された文字列 "abc#bcd#" riteが含まれている必要がありますか?返された文字列が格納され、チェックボックスの値として使用されるように、どうすればよいかどうか疑問に思っています。何か解決策を提供できますか? :-) –

+0

結果を変数に保存し、デバッガを使用して実際の結果が何であるかを確認してください。私はKSoap2を一度も使用していないので、私には解決策がありません。 – ZeissS

答えて

1

insteandが

SoapPrimitive responsesData = (SoapPrimitive) envelopes.getResponse(); 
    String result = responsesData .toString(); 
+0

ありがとう!私はただ何かを知りたいだけです。何が結果に含まれますか?私は渡された文字列、つまり「abc#gfg#」を持っていますか?はいの場合は、区切り文字を区切り、チェックボックスの最後の文字列をどのように指定しますか? –

+0

あなたのメソッド( 'getData')の戻り値の型は何ですか?それはJSONか他ですか? – Piraba

+0

それはStringです。私の投稿で言及しているWebサービスコードを参照してください。 –

関連する問題