我的WSDL就像:
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions name="ABCWcfService" targetNamespace="http://www.ABC.com/ABCWcfService" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:tns="http://www.ABC.com/ABCWcfService" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
<wsdl:types>
<xsd:schema targetNamespace="http://www.ABC.com/ABCWcfService/Imports">
<xsd:import schemaLocation="http://desktop/ABCWcfService/ABCWcfService.svc?xsd=xsd0" namespace="http://www.ABC.com/ABCWcfService"/>
<xsd:import schemaLocation="http://desktop/ABCWcfService/ABCWcfService.svc?xsd=xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/"/>
</xsd:schema>
</wsdl:types>
<wsdl:message name="IABCWcfService_GetWhatsOnData_InputMessage">
<wsdl:part name="parameters" element="tns:GetWhatsOnData"/>
</wsdl:message>
<wsdl:message name="IABCWcfService_GetWhatsOnData_OutputMessage">
<wsdl:part name="parameters" element="tns:GetWhatsOnDataResponse"/>
</wsdl:message>
<wsdl:portType name="IABCWcfService">
<wsdl:operation name="GetWhatsOnData">
<wsdl:input wsaw:Action="http://www.ABC.com/ABCWcfService/IABCWcfService/GetWhatsOnData" message="tns:IABCWcfService_GetWhatsOnData_InputMessage"/>
<wsdl:output wsaw:Action="http://www.ABC.com/ABCWcfService/IABCWcfService/GetWhatsOnDataResponse" message="tns:IABCWcfService_GetWhatsOnData_OutputMessage"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="BasicHttpBinding_IABCWcfService" type="tns:IABCWcfService">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="GetWhatsOnData">
<soap:operation soapAction="http://www.ABC.com/ABCWcfService/IABCWcfService/GetWhatsOnData" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="ABCWcfService">
<wsdl:port name="BasicHttpBinding_IABCWcfService" binding="tns:BasicHttpBinding_IABCWcfService">
<soap:address location="http://desktop/ABCWcfService/ABCWcfService.svc"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
我想知道我应该为SOAP_ACTION,METHOD_NAME,NAMESPACE和网址添加什么内容? 我想:
SOAP_ACTION = "http://www.ABC.com/ABCWcfService/IABCWcfService/GetWhatsOnData"
METHOD_NAME = "GetWhatsOnData"
NAMESPACE = "http://www.ABC.com/ABCWcfService"
URL = "http://desktop/ABCWcfService/ABCWcfService.svc"
但它似乎不适用于我的代码:
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.call(SOAP_ACTION, envelope);
SoapObject result = (SoapObject) envelope.getResponse();
它在androidHttpTransport.call(SOAP_ACTION,envelope)行进入异常;异常对象e的值为null。
我已添加
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
清单文件中的
谁能告诉我什么是错的?
非常感谢。
答案 0 :(得分:0)
您可以使用WCFTestClient并单击底部的XML选项卡。您可以找到您正在查找的信息(SOAP URL和Action)。我希望这会有所帮助。
答案 1 :(得分:0)
[OperationContract]
[WebInvoke(Method = "GET",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/Login?ID={ID}&PASSWORD={PASSWORD}")]
System.IO.Stream ValidarLogin(int ID, string PASSWORD);
并在Android客户端
class MiTareaAsincrona extends AsyncTask<Void, Integer, String> {
ProgressDialog dialog=null;
protected void onPreExecute() {
dialog = new ProgressDialog(MainScreen.this);
dialog.setMessage("Verificando sus datos.. ");
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
// dialog.setMax(100);
dialog.setCancelable(false);
dialog.show();
}
@Override
protected String doInBackground(Void... params) {
final EditText text1 = (EditText) findViewById(R.id.editText1);
final EditText text2 = (EditText) findViewById(R.id.editText2);
String Cedula= text1.getText().toString();
String Password = text2.getText().toString();
final String URL = "https://MYURL.COM/NGLOGIN/NGLogin.svc/Login?ID="+Cedula+"&PASSWORD="+Password;
if(!Cedula.equals("") || !Password.equals("")){
try {
key=ValidarLogin(URL);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
key="noinet";
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// this.cancel(true);
}
return key;
}
@Override
protected void onPostExecute(String result) {
String a= result.toString();
Boolean aa= " ".equals(result);
if(!result.equals("false") & !result.equals("noinet")){
dialog.dismiss();
finalizo=true;
if(finalizo){
Intent intent = new Intent(getApplicationContext(), MainMenu.class);
intent.putExtra("llave", key);
startActivity(intent);}
ValidarLogin(URL)代码:
public String ValidarLogin (String URL) throws ClientProtocolException, IOException, JSONException
{
Security.addProvider(new BouncyCastleProvider());
HttpClient client = new MyHttpsClient(getApplicationContext());
HttpGet get = new HttpGet(URL);
HttpResponse response = client.execute(get);
int status = response.getStatusLine().getStatusCode();
if(status == 200) //sucess
{
HttpEntity e = response.getEntity();
String key = EntityUtils.toString(e);
// get.abort();
/*/ char[] arreglo = key.toCharArray();
char[] arreglo2= new char[arreglo.length-2];
for(int x=1; x<arreglo.length-1;x++){
arreglo2[x-1] = arreglo[x];
}
/*/
if(!key.equals("")){return key;}
return "false";
}
return "false";
}
如果用户和密码正常,wcf会返回1或者没有任何内容。
希望这可以帮助你