[英]Error calling web service
我正在尝试从Android应用程序调用网络服务。 我部署了一个Web服务,该服务在Java中使用Hibernate插入了一条记录(产品条形码,产品名称),并且编写了一个活动来对其进行测试。
当我在AVD上运行它时,出现connectionException: Connection refused
这是我的代码:
package com.market_helper.app;
import android.R.string;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.ksoap2.serialization.PropertyInfo;
public class Market_helper_androidActivity extends Activity {
private static final String SOAP_ACTION = "http://localhost:7675/market_helper/services/Main";
private static final String METHOD_NAME = "insertProduct";
private static final String NAMESPACE = "http://localhost:7675/market_helper/services/";
private static final String URL = "http://localhost:7675/market_helper/services/Main?wsdl";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try {
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("barCode", "12345");
request.addProperty("productName", "abc");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.call(SOAP_ACTION, envelope);
Object result = envelope.getResponse();
} catch (Exception e) {
e.printStackTrace();
}
}
}
这是我在Android上的第一个Web服务,我不确定代码是否正确。 我正在调用一个名为insertProduct(String barCode,String productName)
。 该Web服务正在运行并经过测试。
private static final String SOAP_ACTION = "http://localhost:7675/market_helper/services/Main";
您已给LocalHost
尝试使用IP地址而不是LocalHost
喜欢这个
private static final String SOAP_ACTION = "http://10.120.159.87:7675/market_helper/services/Main";
打开浏览器时可以看到。 我使用这个网站
“ http://本地主机:49674 / Service.svc”
我应该写什么? 我总是在尝试捕获时出错。 我在.net Web服务中使用了WCF。 和EntityFramework。
private final String NAMESPACE="http://tempuri.org/IService/"; private final String SOAPACTION="http://tempuri.org/IService/GetTreatmentValues"; private final String METHODNAME="GetTreatmentValues"; private final String URL="http:// local host:49674/Service.svc";
我的错误在哪里? (我也使用ksoap 2.4)
确保在您的AndroidManifest.xml中设置了Internet权限,一旦设置了该功能,一切都会正常进行,我遇到了同样的问题。
<uses-permission android:name="android.permission.INTERNET" />
private static final String URL = "http://localhost:7675/market_helper/services/Main?wsdl";
在此行中,将“?wsdl”放在URL末尾并删除它,然后将您的web服务的扩展名(.asmx或.svc)放在末尾而不是它是错误的。
private static final String URL = "http://localhost:7675/market_helper/services/Main.asmx";
感谢您的帮助,我已经解决了网址问题
我使用ipconfig命令获取本地IP
我的Apache Tomcat服务器使用了端口7675
我将端口添加到防火墙例外端口中,以确保它可以正常工作。
而且没有我更改过的asmx文件?wsdl
现在,我可以从浏览器中看到wsdl描述。
我从XML文件“ main.wsdl”中获得了命名空间
<schema elementFormDefault="qualified" targetNamespace="http://app.market_helper.com" xmlns="http://www.w3.org/2001/XMLSchema">
正确的代码在这里: private static final String SOAP_ACTION = "http://app.market_helper.com/insertProduct"; private static final String METHOD_NAME = "insertProduct"; private static final String NAMESPACE = "http://app.market_helper.com"; private static final String URL = "http://192.168.1.2:7675/market_helper/services/Main?wsdl";
private static final String SOAP_ACTION = "http://app.market_helper.com/insertProduct"; private static final String METHOD_NAME = "insertProduct"; private static final String NAMESPACE = "http://app.market_helper.com"; private static final String URL = "http://192.168.1.2:7675/market_helper/services/Main?wsdl";
现在,我可以从Android应用程序中使用Web服务了。
我发回正确的代码给与我有同样问题的人。
private static final String SOAP_ACTION = "http://localhost:7675/market_helper/services/insertProduct";
SOAP ACTION=NAMESPACE+METHOD NAME;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.