如何使用.net webservice连接android

时间:2016-08-31 09:45:08

标签: android web-services

我试了很多但是无法在android中调用web服务我无法理解是什么问题。我在这里发布我的代码=

  

java代码是:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    et = (EditText) findViewById(R.id.editText1);
    tv = (TextView) findViewById(R.id.tv_result);
    b = (Button) findViewById(R.id.button1);
    pg = (ProgressBar) findViewById(R.id.progressBar1);

    b.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            if (et.getText().length() != 0 && et.getText().toString() != "") {
                editText = et.getText().toString();
                AsyncCallWS task = new AsyncCallWS();
                task.execute();

            } else {
                tv.setText("Please enter name");
            }
        }
    });
}
private class AsyncCallWS extends AsyncTask<String, Void, Void> {
    @Override
    protected Void doInBackground(String... params) {
        displayText = WebService.invokeHelloWorldWS(editText,"AuthenticateUser");
        return null;
    }
    @Override
    protected void onPostExecute(Void result) {
        tv.setText(displayText);
        pg.setVisibility(View.INVISIBLE);
    }
    @Override
    protected void onPreExecute() {
        pg.setVisibility(View.VISIBLE);
    }

    @Override
    protected void onProgressUpdate(Void... values) {
    }
}
  

网络服务是:

private static String NAMESPACE ="http://tempuri.org/";
private static String URL ="http://192.168.5.106/smartwebservice/smartwebservice.asmx";
private static String SOAP_ACTION ="http://tempuri.org/";
public static String invokeHelloWorldWS(String name, String webMethName) {
    String resTxt = null;       
    SoapObject request = new SoapObject(NAMESPACE, webMethName);       
    PropertyInfo sayHelloPI = new PropertyInfo();      
    sayHelloPI.setName("Name");      
    sayHelloPI.setValue(name);       
    Set dataType  sayHelloPI.setType(String.class);
    request.addProperty(sayHelloPI);
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
            SoapEnvelope.VER11);

    envelope.dotNet = true;
    envelope.setOutputSoapObject(request);
    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

    try {
        androidHttpTransport.call(SOAP_ACTION+webMethName, envelope);         
        SoapPrimitive response = (SoapPrimitive) envelope.getResponse();   
        resTxt = response.toString();

    } catch (Exception e) {
        e.printStackTrace();
        resTxt = "Error occured";
    }
    return resTxt;
}
  

Logcat是:

Thread-1578(HTTPLog):isShipBuild为true 08-31 14:24:14.067 4288-4712 / com.example.dell.piechart2 I / System.out:Thread-1578(HTTPLog):SmartBonding启用为false,SHIP_BUILD为true,log to file为false,DBG为false 08-31 14:24:14.687 4288-4712 / com.example.dell.piechart2 W / System.err:SoapFault - faultcode:&#39; soap:Client&#39; faultstring:&#39;服务器无法识别HTTP标头SOAPAction的值:http://tempuri.org/AuthenticateUser。&#39; faultactor:&#39; null&#39;详情:org.kxml2.kdom.Node@42816af8 08-31 14:24:14.687 4288-4712 / com.example.dell.piechart2 W / System.err:at org.ksoap2.serialization.SoapSerializationEnvelope.parseBody(SoapSerializationEnvelope.java:147) 08-31 14:24:14.687 4288-4712 / com.example.dell.piechart2 W / System.err:at org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:140) 08-31 14:24:14.687 4288-4712 / com.example.dell.piechart2 W / System.err:at org.ksoap2.transport.Transport.parseResponse(Transport.java:118) 08-31 14:24:14.687 4288-4712 / com.example.dell.piechart2 W / System.err:at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:275) 08-31 14:24:14.687 4288-4712 / com.example.dell.piechart2 W / System.err:at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:118) 08-31 14:24:14.687 4288-4712 / com.example.dell.piechart2 W / System.err:at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:113) 08-31 14:24:14.687 4288-4712 / com.example.dell.piechart2 W / System.err:at com.example.dell.piechart2.WebService.invokeHelloWorldWS(WebService.java:49) 08-31 14:24:14.687 4288-4712 / com.example.dell.piechart2 W / System.err:at com.example.dell.piechart2.CheckDNLoginActivity $ AsyncCallWS.doInBackground(CheckDNLoginActivity.java:57) 08-31 14:24:14.687 4288-4712 / com.example.dell.piechart2 W / System.err:at com.example.dell.piechart2.CheckDNLoginActivity $ AsyncCallWS.doInBackground(CheckDNLoginActivity.java:53) 08-31 14:24:14.687 4288-4712 / com.example.dell.piechart2 W / System.err:at android.os.AsyncTask $ 2.call(AsyncTask.java:288) 08-31 14:24:14.687 4288-4712 / com.example.dell.piechart2 W / System.err:at java.util.concurrent.FutureTask.run(FutureTask.java:237) 08-31 14:24:14.687 4288-4712 / com.example.dell.piechart2 W / System.err:at android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:231) 08-31 14:24:14.687 4288-4712 / com.example.dell.piechart2 W / System.err:at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 08-31 14:24:14.687 4288-4712 / com.example.dell.piechart2 W / System.err:at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:587) 08-31 14:24:14.687 4288-4712 / com.example.dell.piechart2 W / System.err:at java.lang.Thread.run(Thread.java:841) 08-31 14:28:28.697 4288-4288 / com.example.dell.piechart2 W / IInputConnectionWrapper:showStatusIcon on inactive InputConnection

我无法使用android调用Web服务。当我输入名称错误时。我现在应该怎么做 ??任何人都可以吗?

0 个答案:

没有答案