繁体   English   中英

调用网络服务时出错

[英]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"; 

我的错误在哪里? (我也使用kso​​ap 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM