0
ksoap를 사용하여 실시간 데이터로 환율 계산기를 만들고 웹 서비스에 액세스합니다. 그러나 webservice에서 오는 응답은 org.ksoap2.SoapFault입니다. 그러나이 응답은 예외로 throw되지 않습니다. 이 대답은 내 텍스트 영역에서 내 코드에서 무엇이 잘못 되었습니까? , SOAP를 사용하는 Android 액세스 웹 서비스
AndroidHttpTransport httpTransport = new AndroidHttpTransport(URL);
try {
httpTransport.call(SOAP_ACTION, envelope);
System.out.println("2!!!!!!!!!!!!!!!!");
SoapObject result = (SoapObject)envelope.bodyIn;
System.out.println("1!!!!!!!!!!!!!!!!");
input.setText(result.getProperty(0).toString());
} catch (Exception e) {
input.setText(e.getMessage());
}
이와 위의 부품을 교체하십시오,
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.call(SOAP_ACTION, envelope);
Object result = envelope.getResponse();
System.out.println(result.toString());
이 당신의 코드에서
package com.example.deneme;
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 org.ksoap2.transport.HttpTransportSE;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity {
TextView input;
TextView output;
Button convert;
private static final String NAMESPACE = "http://www.webserviceX.NET/";
private static String URL = "http://www.webserviceX.NET/CurrencyConvertor.asmx";
private static final String METHOD_NAME = "ConversionRate";
private static final String SOAP_ACTION = "http://www.webserviceX.NET/ConversionRate";
// Yararlanacağımız web servisin yerini belirtiyoruz.
/*
final static String NAMESPACE = "http://tempuri.org/";
// Web servis üzerinde hangi metodu kullanacağımızı ayarlıyoruz.
final static String METHOD_NAME = "CelsiusToFahrenheit";
// SOAP_ACTION : NAMESPACE ve METHOD_NAME birleşiminden oluşuyor.
final static String SOAP_ACTION = "http://tempuri.org/CelsiusToFahrenheit";
// Son olarak Web servise ait URL tanımlamasını burada yapıyoruz.
final static String URL = "http://www.w3schools.com/webservices/tempconvert.asmx";
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
input=(EditText)findViewById(R.id.editText1);
convert=(Button)findViewById(R.id.convertt);
convert.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
/*
PropertyInfo propInfo=new PropertyInfo();
propInfo.name="FromCurrency";
propInfo.type=PropertyInfo.STRING_CLASS;
propInfo.setValue("GBP");
PropertyInfo propInfo2 = new PropertyInfo();
propInfo2.name="ToCurrency";
propInfo2.type = PropertyInfo.STRING_CLASS;
propInfo2.setValue("EUR");
*/
// request.addProperty(propInfo);
//request.addProperty(propInfo2);
request.addProperty("FromCurrency","GBP");
request.addProperty("ToCurrency","AFA");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
envelope.dotNet=true;
AndroidHttpTransport httpTransport = new AndroidHttpTransport(URL);
try {
httpTransport.call(SOAP_ACTION, envelope);
System.out.println("2!!!!!!!!!!!!!!!!");
SoapObject result = (SoapObject)envelope.bodyIn;
System.out.println("1!!!!!!!!!!!!!!!!");
input.setText(result.getProperty(0).toString());
} catch (Exception e) {
input.setText(e.getMessage());
}
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}][1]
[1]: http://i.stack.imgur.com/QtUoD.png
예외 스택 추적을 게시 할 수 있습니까? – katzoft
예외 없음이 그림에서 서버의 응답입니다. –
http://i.stack.imgur.com/QtUoD.png –