私はここのAndroidのnewbです。私はhttp://www.webservicex.net/globalweather.asmx?WSDLからkSOAP2 Webサービスを消費しようとしています。これまでのところ、私の要求はnull応答を返しました。私の要求に問題はありますか、何か不足していますか?次のようなコードがあります。kSOAP2リクエストはnullオブジェクトを返します
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
Button sendBtn;
EditText editCityName, editCountryName;
String tempCity, tempCountry;
SoapObject testy;
SoapObject request;
final String METHOD_NAME1 = "GetWeather";
final String SOAP_ACTION1 = "http://www.webserviceX.NET/GetWeather";
final String NAMESPACE = "http://www.webserviceX.NET";
final String SOAP_URL = "http://www.webservicex.net/globalweather.asmx";
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sendBtn = (Button) findViewById(R.id.button);
editCityName = (EditText) findViewById(R.id.editCityName);
editCountryName = (EditText) findViewById(R.id.editCountryName);
sendBtn.setOnClickListener(this);
Log.e("create", "test123");
}
@Override
public void onClick(View v) {
tempCity = editCityName.getText().toString();
tempCountry = editCountryName.getText().toString();
testyTask task = new testyTask();
task.execute();
Log.e("test", "task started");
}
private class testyTask extends AsyncTask <String, Void, String>
{
@Override
protected String doInBackground(String... params)
{
request = new SoapObject(NAMESPACE, METHOD_NAME1);
request.addProperty("CityName", tempCity);
request.addProperty("CountryName", tempCountry);
Log.e("request1", request.getProperty("CityName").toString());
Log.e("request2", request.getProperty("CountryName").toString());
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER12);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE httpTransport = new HttpTransportSE(SOAP_URL);
Log.d("transport", httpTransport.toString());
httpTransport.debug = true;
try {
httpTransport.call(SOAP_ACTION1, envelope);
testy = (SoapObject) envelope.bodyIn;
} catch (Exception e) {
e.getMessage();
}
//Log.d("dump Request: " , httpTransport.requestDump);
String xml = httpTransport.responseDump;
Log.e("dump response: " , xml); //Error here
//Log.e("weather", testy.toString());
return "blah";
}
@Override
protected void onPostExecute(String aVoid)
{
Log.e("end test", testy.toString());
super.onPostExecute(aVoid);
Toast.makeText(getApplicationContext(), testy.toString(), Toast.LENGTH_LONG).show();
}
}
}
あなたは 'http:// wsdlbrowser.com /'であなたの石鹸サービスを試すことができ、その応答は何ですか? –
私はサービスでウェブサイトを試しましたが、ウェブサイトからの応答は文字列オブジェクトです。 – RLim