В настоящее время я потребляю веб-сервис от android по методу SOAP. Мне нужно вызвать веб-сервис и вернуть результат на андроиде /eclipse.ie.I нужно получить данные от edittext и вернуть соответствующее значение.
Пожалуйста, найдите мой код для справки.
веб-метод
public class GetName {
public String GetName(String a){
return(a);
} }
ПРИМЕЧАНИЕ. Чтобы избежать исключений операции сокета из основного потока активности, я написал отдельные классы и изолировал связанные с мылом функции.
Caller.java
public class Caller extends Thread
{
public AlertDialog ad;
public CallSoap cs;
public int a;
public void run()
{
try
{
cs=new CallSoap();
String resp=cs.Call(a);
MySOAPCallActivity.rslt=resp;
}catch(Exception ex)
{
MySOAPCallActivity.rslt=ex.toString();
}
} }
CallSOAP
public class CallSoap
{
public final String SOAP_ACTION = "http://tempuri.org/GetName";
public final String OPERATION_NAME = "GetName";
public final String WSDL_TARGET_NAMESPACE = "http://tempuri.org/";
public final String SOAP_ADDRESS = "http://122.248.240.105:234/Service1.asmx?WSDL";
public CallSoap()
{
}
public String Call(int a)
{
SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE,OPERATION_NAME);
PropertyInfo pi=new PropertyInfo();
pi.setName("a");
pi.setValue(a);
pi.setType(Integer.class);
request.addProperty(pi);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS);
Object response=null;
try
{
httpTransport.call(SOAP_ACTION, envelope);
response = envelope.getResponse();
}
catch (Exception exception)
{
response=exception.toString();
}
return response.toString();
}
}
MySOAPCallActivity
public class MySOAPCallActivity extends Activity
{
public static String rslt="";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button b1=(Button)findViewById(R.id.btn_getvalues);
final AlertDialog ad=new AlertDialog.Builder(this).create();
b1.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
try
{
EditText ed1=(EditText)findViewById(R.id.et_1);
String ed1str = ed1.getText().toString().trim();
int a = Integer.parseInt(ed1str);
rslt="START";
Caller c=new Caller();
c.a=a;
c.ad=ad;
c.join();
c.start();
while(rslt=="START")
{
try
{
Thread.sleep(5);
}catch(Exception ex)
{
}
}
ad.setTitle("");
ad.setMessage(rslt);
}catch(Exception ex)
{
ad.setTitle("Error!");
ad.setMessage(ex.toString());
}
ad.show();
}
});
} }
ВЫХОДНЫЙ ЭКРАН
Примечание. Если я вхожу в vlaue "0005", он должен вернуть строку "Vivek" в браузере.
Но на моем экране вывода это показано как "Имя не найдено". Я хочу вернуть соответствующее значение в соответствии с введенным пользователем. Пожалуйста, дайте мне знать, как исправить мой источник.
Спасибо за ваше драгоценное время!..
Пожалуйста, используйте мой опыт. Я думаю, это поможет вам. У меня было много проблем, выполняя ту же задачу. Но, наконец, я сделал то, что было дано в блоге. http://www.insightforfuture.blogspot.com/search/label/Android