我使用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运行时,没有任何消息......
答案 0 :(得分:0)
1。将网址更改为
private static final String URL = "http://localhost:60977/Service1.svc";
并检查
和
unable to get Response from HttpResponse when passing soap object (soap1.2) android?
答案 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并且不要忘记清单文件中的网络权限