使用kso​​ap在android中调用webservice

时间:2013-08-05 09:11:35

标签: android web-services

我使用visual studio 2010创建wcf并在webmaterix 3上发布.... 我在Android应用程序中调用此web服务但未运行... 这是我的web.config:

<?xml version="1.0"?>
<configuration>
<system.web>
  <compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
  <behaviors>
  <serviceBehaviors>
    <behavior>

       <serviceMetadata httpGetEnabled="true"/>

      <serviceDebug includeExceptionDetailInFaults="false"/>
    </behavior>
  </serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
 <system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

</configuration>

这是我的android代码:

   private static final String NAMESPACE = "http://tempuri.org/";
            private static final String URL = 
                "http://localhost:60977/Service1.svc?singleWsdl";   
  private static final String SOAP_ACTION =     "http://tempuri.org/IService1/GetData";
            private static final String METHOD_NAME = "GetData";
             TextView txt=(TextView)findViewById(R.id.textView1);
        SoapObject request = new SoapObject(NAMESPACE,      METHOD_NAME);       
    SoapSerializationEnvelope envelope = 
        new    SoapSerializationEnvelope(SoapEnvelope.VER11); 

                envelope.setOutputSoapObject(request);
        HttpTransportSE androidHttpTransport = new    HttpTransportSE(URL);
                name("SS");
                try {
                    name("0");
            androidHttpTransport.call(SOAP_ACTION, envelope);
                    name("1");
        SoapObject resultsRequestSOAP = (SoapObject) envelope.bodyIn;
                    name("2");
                    name(resultsRequestSOAP.toString());
                    name("3");
            txt.setText("Received :" + resultsRequestSOAP.toString());

                } catch (Exception e) {
                    txt.setText(e.getMessage());
                    name(e.getMessage());
                    e.printStackTrace();
                }

当catch运行时,没有任何消息......

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

 private static final String URL = 
                "http://localhost:60977/Service1.svc?singleWsdl"; 
            private static final String METHOD_NAME = "GetData";
    final String SOAP_ACTION = "http://tempuri.org/GetData";                  

                       try {
                           SoapObject request = new SoapObject(WebServiceUtil.NAMESPACE, METHOD_NAME);
                           SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
                           envelope.dotNet = true;                        
                           envelope.setOutputSoapObject(request);

                           HttpTransportSE androidHttpTransport = new HttpTransportSE(WebServiceUtil.URL);
                           Log.d("URL  :: ", WebServiceUtil.URL);           
                           androidHttpTransport.call(SOAP_ACTION, envelope);


                       }
                       catch (Exception e) {
                            e.printStackTrace();

                       }

                }

答案 2 :(得分:0)

实际上,localhost是模拟器本身,因为代码在模拟器中运行。所以你应该连接到10.0.2.2。有关详细信息,请参阅 Android Emulator Networking并且不要忘记清单文件中的网络权限