初学android开发,谢谢大家帮忙。
贴上代码:
c# webservice:using System;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;[WebService(Namespace = "http://tempuri.org/")]
[SoapRpcService]//指定使用rpc方式
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//[System.ComponentModel.ToolboxItem(false)] // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
//[System.Web.Script.Services.ScriptService]
public class Service : System.Web.Services.WebService
{
    public Service () {        //如果使用设计的组件,请取消注释以下行 
        //InitializeComponent(); 
    }    [WebMethod]
    public string HelloWorld() {
        return "Hello World";
    }    [WebMethod]
    public string TestOne(string str1)
    {
        return "Test" + str1;
    }
    
}
备注:发布后,手机连数据线,能根据IP地址使用浏览器访问web服务;客户端代码:
package com.example.webservicetest;import android.app.Activity;  
import android.os.Bundle;  
import android.view.View;  
import android.view.View.OnClickListener;  
import android.widget.Button;  
import android.widget.EditText;  
import android.widget.TextView; 
import org.ksoap2.SoapEnvelope;  
import org.ksoap2.serialization.SoapObject;  
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.ksoap2.serialization.*;public class MainActivity extends Activity { private EditText userName;  
private EditText userPass;  
private Button btnLogin;  
private Button btnClose;  
private TextView tv; 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://192.168.0.113/TestServer/Service.asmx?WSDL";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


btnLogin = (Button) findViewById(R.id.button1);
btnClose = (Button) findViewById(R.id.button2);
userName = (EditText) findViewById(R.id.edit1);  
userPass = (EditText) findViewById(R.id.edit2);
tv = (TextView)findViewById(R.id.tv);

btnLogin.setOnClickListener(new myClick()); }


private class myClick implements OnClickListener {   @Override
  public void onClick(View v)
  {
   try
   {
   
 //调用.net 的WebService.   
     //设置连接参数
     SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);      
     //增加属性参数。 将相关的函数参数放入到过程中。
     SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);//soap协议版本必须用SoapEnvelope.VER11(Soap V1.1);
     //注意:这个属性是对dotnetwebservice协议的支持,如果dotnet的webservice 不指定rpc方式则用true否则要用false
     envelope.dotNet = true;
     //envelope.setOutputSoapObject(request);//设置请求参数
     envelope.bodyOut=request;   //enveloper.bodyOut=request 与 envelope.setOutputSoapObject(request) 效果相同。
     //step4 创建HttpTransportSE对象
     HttpTransportSE ht = new HttpTransportSE(URL);
    //step5 调用WebService
     ht.call(SOAP_ACTION, envelope);    //关键的一步,很多问题都在这一步调试时出现问题。要么是IIS有问题,要么是ksoap2相关参数没配置好。
     if(envelope.getResponse()!=null){
       SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
        
       String  result =response.toString() ;
       if (result != null)
       {
        tv.setText(result);
       }
       else
       {
        tv.setText("登录失败!");
       }
      }
     else {
      tv.setText("服务器可能没有开启!");
     }
     
     
   } catch (Exception e)
   {
    // TODO: handle exception
   e.printStackTrace();
   tv.setText("异常了,原因:" + e.getMessage());
   }   
   
}
}
}
备注:客户端访问WEB服务是网上参考的,执行到: ht.call(SOAP_ACTION, envelope);    转入catch,,而且e.getMessage()获取的值为null初学android开发,谢谢大家帮忙。

解决方案 »

  1.   

      <uses-sdk
            android:minSdkVersion="8"
            android:targetSdkVersion="17" />
        
    <uses-permission android:name="android.permission.INTERNET"/>
    也加了访问权限了。
      

  2.   

    别光看e.getMessage()这个消息
    这个消息报null的时候情况比较多
    建议看看e这个错误对象,看一下每个属性,里面还有有用的信息。
      

  3.   

    最近我也遇到了差不多的问题,想试试调用.net的webservice的接口,和你的代码基本差不多,
    我的问题是导入不同的ksoap2 jar包 报的错还不一样
    要是楼主先解决了 通知一声啊
      

  4.   

    看了下ksoap2的官网,说现在只支持java1.3不知道是不是这个问题,我是java1.7说啥也调不出来
      

  5.   

    我搞定了,安卓4.0以后,主线程不能访问网络,你再开个线程调webservice就好使了