android调用webservice带soapheader验证
来源:互联网 发布:闲鱼如何申请淘宝介入 编辑:程序博客网 时间:2024/05/16 11:47
android端代码//需要ksoap2jar包
public class myActivity extends Activity
{
private TextView textview1;
private Handler mHandler=new Handler(){
public void handleMessage(Message msg){
switch(msg.what){
case 0X100:
String result=(String)msg.obj;
textview1.setText(result);
break;
default:
super.handleMessage(msg);
}
}
};
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.mydata);
//在新线程中获取远程数据
new Thread()
{
public void run() {
Message msg = Message.obtain(mHandler);
msg.obj = getInfo("x","y");
msg.what=0x100;
mHandler.sendMessage(msg);
};
}.start();
}
public String getInfo(String para1,String para2){
String nameSpace = "http://tempuri.org/";
String methodName = "getMyData";
String endPoint = "http://abc.edu.cn/webservice1.asmx";
String soapAction = "http://tempuri.org/getMyData";
//建立soapheader,用header传UserName和PassWord
Element[] header = new Element[1];
header[0] = new Element().createElement(nameSpace, "MySoapHeader");
Element uname = new Element().createElement(nameSpace, "UserName");
uname.addChild(Node.TEXT, "xxx");//<UserName>xxx</UserName>
header[0].addChild(Node.ELEMENT, uname);
Element pass = new Element().createElement(nameSpace, "PassWord");
pass.addChild(Node.TEXT, "xxx");;//<PassWord>xxx</PassWord>
header[0].addChild(Node.ELEMENT, pass);
SoapObject so = new SoapObject(nameSpace, methodName);
so.addProperty("p1", para1);
so.addProperty("p2", para2);
SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER12);
envelope.headerOut=header;
envelope.bodyOut=so;
envelope.dotNet=true;
envelope.setOutputSoapObject(so);
HttpTransportSE transport=new HttpTransportSE(endPoint);
try {
transport.call(soapAction, envelope);// 调用WebService
} catch (Exception e) {
e.printStackTrace();
}
SoapObject object=(SoapObject)envelope.bodyIn;// 获取返回的数据
SoapObject anytype=(SoapObject)object.getProperty(0); //anytype={Result=xxxxxx,......}
String rs=anytype.getProperty("Result").toString();
return rs;
}
}
服务端
using ......
[WebService(Namespace = http://tempuri.org/)]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
public class WebService1 : System.Web.Services.WebService
{
public MySoapHeader myHeader;
public WebService1()
{
}
[WebMethod]
[SoapHeader("myHeader",Direction=SoapHeaderDirection.In)]//android端传给服务端验证
//[SoapHeader("myHeader",Direction=SoapHeaderDirection.Out)]//服务端给android端验证,需要创建header
public myClass getMyData(string para1,string para2)
{
myClass obj = new myClass();
if (myHeader == null)
{
obj.Result = "无法调用此服务!";
return obj;
}
if (myHeader.UserName.Equals("xxx") & myHeader.PassWord.Equals("xxx"))
{
//你的代码
return obj;
}
else
{
obj.Result = "无权调用此服务!";
return obj;
}
}
public class myClass
{
public string Result{get;set;}
public string Other{ get; set; }
public myClass()
{
Result = "null";
Other = "null";
}
}
public class MySoapHeader : System.Web.Services.Protocols.SoapHeader
{
//名称必须与android端一样
public string UserName;
public string PassWord;
}
}
请求
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<MySoapHeader xmlns=“http://tempuri.org/”>
<UserName>string</UserName>
<PassWord>string</PassWord>
</MySoapHeader>
</soap:Header>
<soap:Body>
<getMyData xmlns=“http://tempuri.org/”>
<p1>string</p1>
<p2>string</p2>
</getMyData>
</soap:Body>
</soap:Envelope>
响应
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<getMyDataResponse xmlns="http://tempuri.org/">
<getMyDataResult>
<Result>string</Result>
<Other>string</Other>
</getMyDataResult>
</getMyDataResponse>
</soap:Body>
</soap:Envelope>
- android调用webservice带soapheader验证
- android调用带soapheader的webservice
- android调用带soapheader的webservice
- Java调用带SoapHeader头验证的.net Webservice示例代码
- C#调用Axis2发布的带SoapHeader用户验证的WebService(通过测试)
- Java调用带SoapHeader头验证的.net Webservice示例代码
- webservice SoapHeader 验证
- Java调用C#带soapheader的webservice接口
- # C# 调用java的WebService添加SOAPHeader验证
- ASP.NET调用JAVA的CXF生成的Webservice,并带有Soapheader验证的解决方案
- webservice 应用的问题(vb6调用,soapheader)
- c# 调用java webservice带有soapheader
- java调用webservice-添加认证头(SOAPHeader)
- webservice soapHeader
- 使用SoapHeader实现对WebService的访问验证
- php webservice中使用soapheader简单验证 实例
- 【转】php调用webservice和有SoapHeader认证的
- java 调用.net webservice 带soap验证头消息方式
- Android之点击回退键俩次退出程序
- Appium移动自动化测试(五)——获取apk的package、activity和element
- 编程珠玑——字符串移位
- C#解析Json数据(利用Newtonsoft.Json库)
- hdu 1251 统计难题
- android调用webservice带soapheader验证
- android开发环境
- Java finally语句到底是在return之前还是之后执行?
- 说说TDD的好处和坏处-对话
- JAVA自增陷阱
- ISO C++11 doesn't allow conversion from string literal to 'char*'
- 互联网语言与文化
- servlet/filter/listener/interceptor区别与联系
- 说说JSON和JSONP