我一直在尝试从wcf dot net webservices获取数据响应,但无法得到正确的响应。从2天开始,在连接webservices期间解决此错误。
我还检查 SoapEnvelope.VER11 但无法获取数据。
public class MainActivity extends Activity {
private static final String METHOD_NAME = "SayHello";
private static final String NAMESPACE = "http://tempuri.org/IWFPService/";
private static final String URL = "http://*****.svc";
private static final String SOAP_ACTION = NAMESPACE+METHOD_NAME;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.test);
AsyncTaskRunner runner = new AsyncTaskRunner();
runner.execute();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
private class AsyncTaskRunner extends AsyncTask<String, String, String> {
private String resp;
@Override
protected String doInBackground(String... params) {
publishProgress("Loading contents..."); // Calls onProgressUpdate()
try {
// SoapEnvelop.VER11 is SOAP Version 1.1 constant
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER12);
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
//request.addProperty("TestNumber", 12);
//bodyOut is the body object to be sent out with this envelope
envelope.bodyOut = request;
envelope.dotNet = true;
Log.e(SOAP_ACTION, "-->URL>"+URL);
Log.e(SOAP_ACTION, "-->METHOD_NAME>"+METHOD_NAME);
Log.e(SOAP_ACTION, "-->SOAP_ACTION>"+SOAP_ACTION);
Log.e(SOAP_ACTION, "-->envelope>"+envelope);
Log.v("", "=========== Request : " + request);
HttpTransportSE transport = new HttpTransportSE(URL);
try {
transport.call(SOAP_ACTION, envelope);
} catch (IOException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
}
//bodyIn is the body object received with this envelope
if (envelope.bodyIn != null) {
//getProperty() Returns a specific property at a certain index.
SoapPrimitive resultSOAP = (SoapPrimitive) ((SoapObject) envelope.bodyIn)
.getProperty(0);
resp=resultSOAP.toString();
Log.e(SOAP_ACTION, "-->>"+resp);
}
Log.e(SOAP_ACTION, "<<<-->>"+resp);
} catch (Exception e) {
e.printStackTrace();
resp = e.getMessage();
}
return resp;
}
/**
*
* @see android.os.AsyncTask#onPostExecute(java.lang.Object)
*/
@Override
protected void onPostExecute(String result) {
// execution of result of Long time consuming operation
// In this example it is the return value from the web service
textView.setText(resp);
}
/**
*
* @see android.os.AsyncTask#onPreExecute()
*/
@Override
protected void onPreExecute() {
// Things to be done before execution of long running operation. For
// example showing ProgessDialog
}
/**
*
* @see android.os.AsyncTask#onProgressUpdate(Progress[])
*/
@Override
protected void onProgressUpdate(String... text) {
textView.setText(text[0]);
// Things to be done while execution of long running operation is in
// progress. For example updating ProgessDialog
}
}
}
我有绿色的logcat:
04-16 12:10:41.363: E/http://tempuri.org/IWFPService/SayHello(22684): -->URL>http://192.168.169.133/WFPeWin2/content/WFPService.svc
04-16 12:10:41.363: E/http://tempuri.org/IWFPService/SayHello(22684): -->METHOD_NAME>SayHello
04-16 12:10:41.363: E/http://tempuri.org/IWFPService/SayHello(22684): -->SOAP_ACTION>http://tempuri.org/IWFPService/SayHello
04-16 12:10:41.363: E/http://tempuri.org/IWFPService/SayHello(22684): -->envelope>org.ksoap2.serialization.SoapSerializationEnvelope@4212da18
04-16 12:10:41.363: V/(22684): =========== Request : SayHello{}
04-16 12:10:41.598: W/System.err(22684): java.io.IOException: HTTP request failed, HTTP status: 500
04-16 12:10:41.598: W/System.err(22684): at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:195)
04-16 12:10:41.598: W/System.err(22684): at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:116)
04-16 12:10:41.598: W/System.err(22684): at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:111)
04-16 12:10:41.598: W/System.err(22684): at com.example.samplews.MainActivity$AsyncTaskRunner.doInBackground(MainActivity.java:67)
04-16 12:10:41.598: W/System.err(22684): at com.example.samplews.MainActivity$AsyncTaskRunner.doInBackground(MainActivity.java:1)
04-16 12:10:41.598: W/System.err(22684): at android.os.AsyncTask$2.call(AsyncTask.java:287)
04-16 12:10:41.598: W/System.err(22684): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
04-16 12:10:41.598: W/System.err(22684): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
04-16 12:10:41.598: W/System.err(22684): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
04-16 12:10:41.598: W/System.err(22684): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
04-16 12:10:41.598: W/System.err(22684): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
04-16 12:10:41.598: W/System.err(22684): at java.lang.Thread.run(Thread.java:856)
04-16 12:10:41.598: E/http://tempuri.org/IWFPService/SayHello(22684): <<<-->>null
我的代码有什么问题,任何想法?
答案 0 :(得分:3)
嗯.. HTTP 500是一个内部服务器错误,因此您应该检查服务器是否正在使用SOAPUI或其他一些启动器工具。然后确保您可以从设备访问URL(本例中为IP号),然后开始调试ksaop调用。