我正在尝试从android客户端连接到Wcf web服务。我的客户端工作正常,只有简单的数据类型但是当我试图调用复杂的数据时,它会给出问题。 我这样做了:
Credentials credentials=new Credentials();
credentials.Username="xyz";
credentials.Password="123";
PropertyInfo info=new PropertyInfo();
info.setName("credentials");
info.setValue(credentials);
info.setNamespace(NAMESPACE);
info.setType(new Credentials().getClass());
request.addProperty(info);
SoapSerializationEnvelope envelope =
new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE httpTransport = new HttpTransportSE(URL);
Object response=null;
httpTransport.call(SOAP_ACTION, envelope);
response = envelope.getResponse();
每当我在不执行info.setValue(凭证)的情况下发送凭证时,我都可以将请求发送到服务器,但用户名和密码字段为空。 如果我添加此info.setValue(凭据)我得到eserilization错误。我已经浪费了大约2-3天的时间请帮忙。
答案 0 :(得分:0)
我得到了我的问题的解决方案。我注意到在java和android客户端生成的请求。
Java客户端
<?xml version='1.0' encoding='utf-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body><ns4:myfunction xmlns:ns4="http://tempuri.org/">
<ns4:newMobile>91----------</ns4:newMobile>
<ns4:countryId>1</ns4:countryId>
<ns4:credentials>
<ns2:Password xmlns:ns2="http://schemas.datacontract.org/2004/07/mycompanyWebService.Models">123</ns2:Password>
<ns2:Username xmlns:ns2="http://schemas.datacontract.org/2004/07/mycompanyWebService.Models">xyz</ns2:Username></ns4:credentials>
</ns4:myfunction>
</soapenv:Body>
</soapenv:Envelope>
Android客户端
<v:Envelope xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:c="http://schemas.xmlsoap.org/soap/encoding/" xmlns:v="http://schemas.xmlsoap.org/soap/envelope/"><v:Header /><v:Body>
<myfunction xmlns="http://tempuri.org/" id="o0" c:root="1">
<Mobile i:type="d:string">91----------</Mobile>
<countryId i:type="d:string">1</countryId>
<credentials i:type="d:anyType">
<Username i:type="d:string">hm.1</Username>
<Password i:type="d:string">123</Password></credentials>
</myfunction>
</v:Body>
</v:Envelope>
在java客户端的情况下,它工作但不在android中,所以我使用编组来更改开始标记和结束标记,它对我有用。