我已经开发了WCF服务.NET4,并尝试从Android(1.6)连接到它。 但是,当我尝试连接所有设备时,我得到的是“ org.xmlpull v1 xmlpullparserexception意外类型(位置:java.io.InputStreamReader@4396aa90中的END_DOCUMENT null @ 1:0)”。 ,Soap_Action对我来说还不错。 我也尝试了System.setProperty(“ http.keepAlive”,“ false”)并将SoapEnvelope.VER从10更改为12,但还是一无所有。
我的代码:

package web.service;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import org.ksoap2.*;
import org.ksoap2.serialization.*;
import org.ksoap2.transport.*;
import org.w3c.dom.Text;

 public class WebServiceConnActivity extends Activity {

private static final String NAMESPACE = "http://tempuri.org/" ;
private static final String URL = "http://10.0.2.2:51599/Service.svc";
//private static final String URL = "http://10.0.2.2:51599/MyWCFApp/Service.svc";
private static final String Add_SOAP_ACTION = "http://tempuri.org/IService/HelloWorld";
private static final String METHOD_NAME1 = "HelloWorld";



public TextView tView;
public Button btn;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    tView = (TextView)findViewById(R.id.tView);
    btn = (Button)findViewById(R.id.btn);

    btn.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            GetAdd();
        }
    });

}


public void GetAdd() 
{

    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME1);

    //request.addProperty("value1", "2");
    //request.addProperty("value2", "3");

    SoapSerializationEnvelope envelope =
    new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.dotNet = true;
    envelope.setOutputSoapObject(request);
    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
    System.setProperty("http.keepAlive", "false");
    try
    {
        androidHttpTransport.call(Add_SOAP_ACTION, envelope);
        //java.lang.String receivedInt = (String)envelope.getResponse();
        Object result = (Object)envelope.getResponse();

        tView.setText(result.toString());

    }
    catch(Exception e)
    {
        tView.setText(e.toString());
    }

}  
}

我花了更多时间在这个问题上,这就是我的想法:问题可能出在URL上-我开发了WS .NET3.5,并且一切正常,唯一的区别是URL:

private static final String URL = "http://10.0.2.2:50915/aspWebService/Service.asmx";

但是我不知道在WCF的网址中哪里可能出错。 我从WDSL获取URL,然后将“ localhost”更改为“ 10.0.2.2”,从仿真器浏览器中可以看到地址http://10.0.2.2:51599/Service.svc 这是我的带有URL的WDSL文件的一部分(我想):

<wsdl:service name="Service">
<wsdl:port name="WSHttpBinding_IService" binding="tns:WSHttpBinding_IService">
<soap12:address location="http://localhost:51599/Service.svc"/>
<wsa10:EndpointReference>
<wsa10:Address>http://localhost:51599/Service.svc</wsa10:Address>
<Identity>
<Dns>localhost</Dns>
</Identity>
</wsa10:EndpointReference>
</wsdl:port>
</wsdl:service>

有什么提示吗?

===============>>#1 票数:0

如果您的Web服务返回的是复杂对象(可能是字符串),请尝试以下操作:

 SoapObject response = (SoapObject)envelope.getResponse();
 String string = response.toString();

代替这个:

 Object result = (Object)envelope.getResponse();

===============>>#2 票数:0 已采纳

问题解决了。 如果您使用Visual Studio的开发服务器来测试WCF服务,则可能需要将该服务部署到IIS。 怎么做的,您可以在以下位置找到: http : //msdn.microsoft.com/zh-cn/library/aa751792.aspx

然后在NAMESPACE,URL中进行更改

private static final String NAMESPACE = "http://tempuri.org/" ;
private static final String URL = "http://MyWCFApp/Service.svc";

  ask by dakoz translate from so

未解决问题?本站智能推荐:

2回复

ksoap2连接超时

我正在尝试从android模拟器调用.net Web服务,但出现连接超时异常。 在尝试致电我的WebService之前,我已经成功致电http://www.w3schools.com/webservices/tempconvert.asmx 。 因此,我假设在Android应用程序中
1回复

连接到Web服务时ksoap2 android错误

我正在尝试将Android应用程序连接到Java Web服务,但出现此错误: 我不明白这是网络服务问题还是Android应用程序问题。 我可以从eclipse插件Web服务浏览器运行Web服务,也可以从浏览器运行web.xml页面。 所以我认为网络服务还可以吗? 我不知道从哪里开始
2回复

使用KSOAP2与Android一起发送SOAP消息

嗨,我正在尝试使用KSOAP2 2.6.2 android程序集连接到部署在glassfish 3.1.1上的java WebService。 来自我的android程序。 这是我的命名空间 这是我的发送方法 我在DDMS LogCat中收到以下错误。 我已经复制了我
7回复

序列化要使用KSOAP2发送的int数组

我在尝试向.NET Web服务发送一个int数组时遇到问题,该服务需要在其中一个参数中使用数组。 这至少是我从Web服务的API描述中理解的,它说: 所以当我发送一个如下所示的int时,我没有得到任何错误,我认为它工作正常。 但是当我尝试发送一组int时: 或者整数的A
1回复

在Android中使用Ksoap2调用具有不同名称空间的WSDL

我正在使用Ksoap2库从Android调用WSDL。 我已经做完了,没有任何问题,但是特别是这个WSDL有很多不同的名称空间,这会引起很大的问题。 我发现的就是 http://ksoap.objectweb.org/project/mailingLists/ksoap/msg0045
1回复

Ksoap2 Nullpointer异常

我有一个Web服务,该服务在Tomcat 7.0.54(在我的本地计算机上)上运行。 它有两个方法sayHelloFrom(String from) ,应使用给定的用户名返回问候语字符串。 和saveFile()方法,该方法在调用时会在本地计算机上生成一个文件。 我也有此服务的“标准” j
1回复

kSOAP2中没有类型信息

我正在尝试从Android访问Web服务。 kSOAP (我尝试过2.4 ,现在正在使用3.0.0 RC5 )似乎是一种很好的方法。 我可以通过以下方式访问该服务 但没有类型信息。 这特别糟糕,因为返回类型是具有多个子类型的类型的数组,并且响应中仅超类型的属性在响应中,无论数组
3回复

错误ksoap2序列化

我尝试制作一个简单的应用程序来提取Web服务的字符串,我已经下载了ksopa2软件包,制作精良的数据和正确的数据(已在Internet教程上进行了测试),但我得到了下面的错误提示,您知道是? 非常感谢你! 应用: } 错误logvcat
5回复

解析ksoap2响应

我使用kso​​ap2 lib从android客户端与SOAP Web服务进行通信。 ksoap团队做的很棒,但是问题是,没有一个很好的例子说明如何在不同方面正确使用它。 例如,我得到以下数据的肥皂响应: 它是一个复杂的对象,或者是StatusSetting对象的集合。 当我尝试获
1回复

无法使用kso​​ap2序列化日期

无论我尝试哪种格式,都无法从Android(Java)应用程序向.NET Web服务发送日期。 我尝试将其发送为GregorianCalendar , Date , Calendar ……没有任何效果。 我收到“无法序列化”错误作为运行时异常。 我正在使用kso​​ap2来管理Web服