c# - 在 android 中访问 C# .net web 服务

标签 c# android web-services

如何通过 android 使用 .net 网络服务?

我的代码是这样的...

package Webservices.pck;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import android.widget.TextView;
import android.app.Activity;
import android.os.Bundle;

public class Webservices extends Activity 
{  
 private static final String SOAP_ACTION = "http://tempuri.org/HelloWorld";
 private static final String METHOD_NAME = "HelloWorld";
 private static final String NAMESPACE = "http://tempuri.org/";
 private static final String URL = "http://ipaddress/Service1.asmx";
 //private Object resultRequestSOAP = null;
    @Override
   public void onCreate(Bundle savedInstanceState)
   {
       super.onCreate(savedInstanceState);
       TextView tv = new TextView(this);
       try
       {
            SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);  
            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
            envelope.setOutputSoapObject(request); 

            HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

            androidHttpTransport.debug = true;
            envelope.dotNet = true;
            androidHttpTransport.call(SOAP_ACTION, envelope);

            SoapObject resultRequestSOAP =  (SoapObject)envelope.bodyIn;
            String result = (String)resultRequestSOAP.getProperty(0).toString();
            tv.setText(result);
            this.setContentView(tv);
       }
       catch (Exception aE)
       {
            tv.setText(aE.toString());
            this.setContentView(tv);
       }
    }
}

在我使用的这段代码中。

String URL = "http://ipaddress/Service1.asmx"; 

然后错误:-- org.xmlpull.v1.xmlPullParserException: expected:START_TAG {http://schemas.xmlsoap.org/soap/envelope/}Envelope(position:START_TAG<html>@1:6 in java.io.InputStreamReader@4375fda8)

最佳答案

您访问的是 html 页面而不是 SOAP 服务。解析器异常已经告诉你出了什么问题。

你有这样的数据

<html><body>... </body></html>

虽然页面应该返回类似的内容

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Body>
        <YourFunctionToCall... />
    </soapenv:Body>
</soapenv:Envelope>

也许您的 URL 中有拼写错误,或者某种身份验证或某种其他类型的错误,因此它返回了 HTML 错误而不是 Soap 请求/响应。

关于c# - 在 android 中访问 C# .net web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3888230/

相关文章:

c# - 基于OS平台的DllImport

java - Glide 不更新相同 url 的图像 android?

java - JBoss WS 临时文件保存不正确

java - 如何为 REST Web 服务编写客户端?

java - 如何在jsp页面中调用web服务

c# - 支持 7zip (LZMA) 的 C# 免费压缩库

c# - 使用 Polly 断路器处理多项服务的正确方法

c# - 如何在逐字字符串中转义“?

android - 除了 "Hello"的东西,还有什么好的 Phonegap 教程吗?

android - 自动插入从右到左的属性 Android Studio