私はアンドロイドクライアントでそれを消費したい.これまでの私のコードは
public class SOAP_TestActivity extends Activity {
private final String NAMESPACE = "http://tempuri.org/";
private final String URL = "http://50.19.226.15/Office365Admin/MsOnline.svc";
private final String SOAP_ACTION = "http://tempuri.org/IMsOnline/ValidateUser";
private final String METHOD_NAME = "ValidateUser";
private final String user_id= "khurram@office365trial.com.au";
private final String password= "friday@123";
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button signin = (Button) findViewById(R.id.regsubmitbtn);
signin.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
boolean auth=doLogin();
System.out.println(auth);
Toast.makeText(getApplicationContext(), String.valueOf(auth), Toast.LENGTH_SHORT).show();
}
});
}
private boolean doLogin() {
boolean result=false;
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("userid", user_id);
request.addProperty("password",password);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
Log.d("myApp", request.toString());
System.out.println(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.debug = true;
try {
androidHttpTransport.call(SOAP_ACTION, envelope);
SoapPrimitive soapPrimitiveResults = (SoapPrimitive)envelope.getResponse();
Log.d("myApp", soapPrimitiveResults.toString());
System.out.println("myApp" +soapPrimitiveResults);
if(soapPrimitiveResults.toString().equalsIgnoreCase("true"))
{
result = true;
}
}catch(SocketException ex)
{
Log.e("Error : " , "Error on soapPrimitiveData() " + ex.getMessage());
ex.printStackTrace();
}
catch (Exception e) {
Log.e("Error : " , "Error on soapPrimitiveData() " + e.getMessage());
e.printStackTrace();
}
return result;
}
}
このコードは例外なく動作しますが、メソッドValidateUser
が常に false を返すため、アプリケーションにログインできません。この同じ Web サービスは Windows Phone で使用されており、問題なく動作しています。また、ユーザー名とパスワードは 100% 正しいです。
NAMESPACE
とに問題があるようSOAP_ACTION
です。私はいくつかのチュートリアルを行ってきましたが、SOAP_ACTION
は と連結NAMESPACE
することによって作成されていると言われていMETHOD_NAME
ます。したがって、チュートリアルに従えばSOAP_ACTION
、
"http://tempuri.org/ValidateUser"
しかし、メソッドの でSOAP_ACTION
与えられたのはWSDL link
"ValidateUser"
"http://tempuri.org/IMsOnline/ValidateUser"
.
私は WCF Webservices と SOAP を初めて使用します。 で指定されたメソッドを実装する方法を誰か教えてくださいWSDL Document(link is at the top)
。重要な何かが欠けているように見えますが、何がわかりません。