Android 활동에서 WSDL에 정의 된 웹 서비스에 액세스하려고합니다. 예상되는 출력은 json 형식의 문자열입니다. 첫 번째 단계는 Android에서 텍스트보기에이 문자열을 인쇄하는 것입니다. 그래서 나는 다음 코드를 사용 :Android에서 SOAP 기반 웹 서비스에 액세스 할 때 ClassCastException이 발생합니다.
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.widget.TextView;
public class MainActivity extends Activity {
private final String NAMESPACE = "XXXXXXXXXXXXXXX";
private final String URL = "XXXXXXXXXXXXXXXXX";
private final String SOAP_ACTION = "XXXXXXXXXXXX";
private final String METHOD_NAME = "XXXXXXXXXXXXXXXXX";
private String webResponse = "";
private TextView textView;
private Thread thread;
private Handler handler = new Handler();
/** Called when the activity is first created. */
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.textView1);
startWebAccess();
}
public void startWebAccess() {
thread = new Thread() {
public void run() {
try {
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(
URL);
androidHttpTransport.call(SOAP_ACTION, envelope);
SoapPrimitive response = (SoapPrimitive) envelope
.getResponse();
webResponse = response.toString();
Log.d("TAG", webResponse);
}
catch (Exception e) {
e.printStackTrace();
}
handler.post(createUI);
}
};
thread.start();
}
final Runnable createUI = new Runnable() {
public void run() {
Log.d("TAG", webResponse);
textView.setText(webResponse);
}
};
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
하지만이 코드를 실행하려고 해요 때 나는 다음 로그 고양이의 오류 (및 텍스트보기없이 출력)을 볼 수 있습니다 여기에
java.lang.ClassCastException: java.util.Vector
가있다 로그 아웃 완료 :
08-06 09:57:11.792: D/dalvikvm(953): GC_FOR_MALLOC freed 771 objects/322464 bytes in 130ms
08-06 09:57:13.252: D/dalvikvm(953): GC_FOR_MALLOC freed 3182 objects/473904 bytes in 41ms
08-06 09:57:13.252: D/NativeCrypto(953): Freeing OpenSSL session
08-06 09:57:13.293: W/System.err(953): java.lang.ClassCastException: java.util.Vector
08-06 09:57:13.293: W/System.err(953): at org.sahana.peoplelocator.MainActivity$2.run(MainActivity.java:56)
어떤 오류가있을 수 있습니까? 내가 여기 붙어서 도와 줘.
미리 감사드립니다.
있어 결과 내가 코드를 시도이
으로 교체 아래
시도 56 MainActivity.java? – Raghunandan
아래에서 해보고 작동하지 않는 경우 알려주십시오. – Raghunandan
감사합니다. 문제를 해결했습니다. – Grant