2011-07-23 6 views
0

私はAndroid上でWebサービスを仕事にしようとしましたが、私は、エミュレータの出力の誤差を撮影した:アンドロイドKSoap出力エラー

org.xmlpull.v1.XmlPullParserException:expecteed:START_TAG {のhttp:/ [email protected]で/schemas.xmlsoap.org/soap/envelope/}Envelope(position:[email protected]:6)ここで

、私のコード:

package com.webServiceDeneme; 

import org.ksoap2.SoapEnvelope; 
import org.ksoap2.serialization.PropertyInfo; 
import org.ksoap2.serialization.SoapObject; 
import org.ksoap2.serialization.SoapPrimitive; 
import org.ksoap2.serialization.SoapSerializationEnvelope; 
import org.ksoap2.transport.AndroidHttpTransport; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.*; 

public class WebServiceDenemeActivity extends Activity { 
Button btn; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    btn=(Button)findViewById(R.id.button1); 
    btn.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      String NAMESPACE="http://www.vakifbank.com.tr/"; 
      String METHOD_NAME="faiz-maliyet-oranlari.aspx"; 
      String SOAP_ACTION="http://www.vakifbank.com.tr/faiz-maliyet-oranlari.aspx"; 
      String URL="http://192.168.2.1/VipEvents/Services/BasicServices.asmx"; 
      SoapObject request=new SoapObject(NAMESPACE, METHOD_NAME); 

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

      try 
      { 
       AndroidHttpTransport aht=new AndroidHttpTransport(URL); 
       aht.call(SOAP_ACTION, envelope); 
       SoapPrimitive res=(SoapPrimitive)envelope.getResponse(); 
       btn.setText(res.toString()); 

      } 
      catch (Exception e) { 
       // TODO: handle exception 
       btn.setText(e.toString()); 
       e.printStackTrace(); 
      } 
     } 
    }); 

}} 

助けていただければ幸いです。

答えて

0

あなたは非SOAP応答を受信した中で最も可能性が高いです。プリントはaht.requestDumpaht.responseDump出力する(外部ファイルまたはLogCatのような)値、


ダンプとあなたのSOAPリクエスト/レスポンスを検査するには、aht.debug = true;を設定し、あなたはaht.cal(...)と呼ばれてきた後。例えば

//... 
aht.debug = true; 
aht.call(SOAP_ACTION, envelope); 

Log.e("SOAP_REQUEST", "----------------------------"); 
Log.e("SOAP_REQUEST", XmlUtils.format(aht.requestDump)); 
Log.e("SOAP_REQUEST", "----------------------------"); 

Log.e("SOAP_RESPONSE", "----------------------------"); 
Log.e("SOAP_RESPONSE", XmlUtils.format(aht.responseDump)); 
Log.e("SOAP_RESPONSE", "----------------------------"); 

XmlUtilsクラスは、次のコードを持っている:私はあなたのコードの部分を追加しました

public class XmlUtils 
{ 
    static public String format(String unformattedXml) 
    { 
     StringWriter writer = new StringWriter(); 
     try 
     { 
      Document doc = parseXml(unformattedXml); 

      TransformerFactory tf = TransformerFactory.newInstance(); 
      Transformer transformer = tf.newTransformer(); 
      transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");   
      transformer.setOutputProperty(OutputKeys.METHOD, "xml"); 
      transformer.setOutputProperty(OutputKeys.INDENT, "yes"); 
      transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); 
      transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");     

      transformer.transform(new DOMSource(doc), new StreamResult(writer)); 
      writer.close(); 
     } 
     catch(Exception ex) 
     { 
      return unformattedXml; 
     } 


     return writer.toString(); 
    } 

    private static Document parseXml(String xml) throws IOException, ParserConfigurationException, SAXException 
    { 
     DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder db = dbf.newDocumentBuilder(); 
     InputSource is = new InputSource(new StringReader(xml)); 
     return db.parse(is);   
    } 

} 
+0

をしかし、問題は消えない、同じエラーがあります。.. :( – rockenpeace

+0

これはあなたの問題を解決するべきではありません、それはあなたがSOAP応答、すなわちSOAPエンベロープ受け取ることを確認するために役立つはずです;及びませんいくつかのランダムな応答を – inazaruk

+0

私はPを追加する必要があることを仮定しsee..i ropertyinfoの部分は、この問題はWebサイトからのものではないためです(「www.vakifbank.com.tr」が利用可能です)..ありがとうございます.. – rockenpeace