android - 为 android studio 编写 SOAP API

标签 android android-studio soap

我正在构建一个 android 应用程序,我希望它使用 SOAP API 请求和响应。 我目前正在使用我得到的一个例子,但这个例子不起作用,我已经问过房东,但他没有回复。 所以这是代码;

Button bt;
String TAG = "Response";
SoapPrimitive resultString;
EditText celsius;
String getCel;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    bt = (Button) findViewById(R.id.bt);
    celsius = (EditText) findViewById(R.id.cel);

    //add button listener
    bt.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {

            getCel = celsius.getText().toString();
            AsyncCallWS task = new AsyncCallWS();
            task.execute();

        }
    });
}

private class AsyncCallWS extends AsyncTask<Void, Void, Void> {

    @Override
    protected void onPreExecute() {
        Log.i(TAG, "onPreExecute");
    }

    @Override
    protected Void doInBackground(Void... params) {
        Log.i(TAG, "doInBackground");
        Calculate();
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        Log.i(TAG, "onPostExecute");
        Toast.makeText(MainActivity.this, "Response" + resultString.toString(), Toast.LENGTH_LONG).show();
    }
}


public void Calculate() {
    String SOAP_ACTION = "http://www.w3schools.com/webservices/CelsiusToFahrenheit";
    String METHOD_NAME = "CelsiusToFahrenheit";
    String NAMESPACE = "http://www.w3schools.com/webservices/";
    String URL = "http://www.w3schools.com/webservices/tempconvert.asmx";

    try {
        SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME);
        Request.addProperty("Celsius", getCel);

        SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        soapEnvelope.dotNet = true;
        soapEnvelope.setOutputSoapObject(Request);

        HttpTransportSE transport = new HttpTransportSE(URL);

        transport.call(SOAP_ACTION, soapEnvelope);
        resultString = (SoapPrimitive) soapEnvelope.getResponse();

        Log.i(TAG, "Result Celsius: " + resultString);
    } catch (Exception ex) {
        Log.e(TAG, "Error: " + ex.getMessage());
    }

我收到一条错误消息:尝试在空对象引用上调用虚拟方法“java.lang.String org.ksoap2.serialization.SoapPrimitive.toString()”

最佳答案

您的网址有误,已更改。 试试这个:

    String SOAP_ACTION = "http://www.w3schools.com/xml/CelsiusToFahrenheit";
    String METHOD_NAME = "CelsiusToFahrenheit";
    String NAMESPACE = "http://www.w3schools.com/xml/";
    String URL = "http://www.w3schools.com/xml/tempconvert.asmx";

希望对你有用。让我知道

关于android - 为 android studio 编写 SOAP API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39074877/

相关文章:

maven - 如何在Android Studio中将Azure存储库添加到Android项目中

objective-c - 如何将值数组传递给 SudzC 生成的 Web 服务类?

android - 如何防止用户安装旧版本的 APK?

android - 添加 SeekBar 更改监听器后应用程序立即崩溃

java - 下载 PDF 不起作用

android - 要求用户观看插页式广告?

android - 当 Google Play 服务添加为依赖项时无法使用 gradle 构建

java - 当我将 MainActivity 分成几个类时 Android 应用程序崩溃

c# - WCF - 实现需要加密一个 soap :body element, 的客户端如何?

java - WebService默认uri java.lang.IllegalArgumentException : 'uri' must not be empty