0

我编写了一个程序来从 web 服务中获取值。但我只得到空值。我想不通原因。但是朋友建议从代理服务器通信时,不允许发送或接收数据。请更正下面的错误。我附上了下面的程序

package com.example.webservice;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.PropertyInfo;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;

import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class WebService extends Activity {
private final String NAMESPACE = "http://tempuri.org/";
private final String URL = "http://www.w3schools.com/webservices/tempconvert.asmx?wsdl";
private final String SOAP_ACTION = "http://tempuri.org/CelsiusToFahrenheit";
private final String METHOD_NAME = "CelsiusToFahrenheit";
String celsius="";

Button b;
TextView tv;
EditText et;
String res,resultval;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web_service);
et=(EditText)findViewById(R.id.editText1);
tv=(TextView)findViewById(R.id.Result);
b=(Button)findViewById(R.id.button1);
b.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
            // TODO Auto-generated method stub
            //String result=getFarenheit(et.getText().toString());
            //tv.setText(result+"°F");
            new service().execute();
            }
        });
    }
private class service extends AsyncTask<Void, Void, String>{

@Override
protected String doInBackground(Void... arg0) {

            SoapObject request= new SoapObject(NAMESPACE, METHOD_NAME);
            PropertyInfo celsuiusPI= new PropertyInfo();
            celsuiusPI.setName("Celsius");
            celsuiusPI.setValue(celsius);
            celsuiusPI.setType(String.class);
            request.addProperty("XMLMarks",celsuiusPI);
            SoapSerializationEnvelope envelope=new SoapSerializationEnvelope (SoapEnvelope.VER11);
            envelope.dotNet=true;
            envelope.implicitTypes = true;
            envelope.enc = SoapSerializationEnvelope.ENC2003;
            envelope.xsd = SoapEnvelope.XSD;
            envelope.xsi = SoapEnvelope.XSI;
            envelope.setOutputSoapObject(request);
            envelope.setAddAdornments(false);
            envelope.setOutputSoapObject(request);
            HttpTransportSE androidHttpTransport=new HttpTransportSE(URL);
            try{
            androidHttpTransport.setXmlVersionTag("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
            androidHttpTransport.debug = true;
            androidHttpTransport.call(SOAP_ACTION, envelope);
            final SoapPrimitive response=(SoapPrimitive)envelope.getResponse();
            Toast.makeText(WebService.this, response    .toString(), 20).show();
            Log.i("WebService output", response.toString());
            System.out.println("WebService Response"+response.toString());
            Object res= response.toString();
            resultval=(String) res;
            }
            catch(Exception e){
            e.printStackTrace();
            }

            return res;

            }
            protected void onPostExecute(String h){
            String result=h;
            tv.setText(result+"°F");

 }


}
}

没有发现异常请更正上面的程序并告诉我错误的原因,以便我学习

4

0 回答 0