java.io.IOException:HTTP请求失败,HTTP状态:500使用WCF for android在android中

时间:2014-04-15 06:51:34

标签: java android web-services wcf ksoap2

我一直在尝试从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

我的代码有什么问题,任何想法?

1 个答案:

答案 0 :(得分:3)

嗯.. HTTP 500是一个内部服务器错误,因此您应该检查服务器是否正在使用SOAPUI或其他一些启动器工具。然后确保您可以从设备访问URL(本例中为IP号),然后开始调试ksaop调用。