[英]How call SOAP based web-Service using PhoneGap and jQuery in Android?
[英]how to call soap web-service in android?
當我嘗試在線下之后在android中調用soap webservices時
androidHttpTransport.call(SOAP_ACTION, envelope);
程序直接跳轉到catch程序應該調用result = envelope.getResponse();
但我沒有恢復一個回應什么是可能的解決方案任何一個幫助在這?
try {
System.out.println("Token ===sssTTTTTT " );
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("encAppName", "dsakjsfj");
request.addProperty("sessionInfo", "sadsadsdf");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.call(SOAP_ACTION, envelope);
result = envelope.getResponse();
Toast.makeText(getBaseContext(), " Result " + "\n" + result.toString(), Toast.LENGTH_SHORT).show();
System.out.println("response === " + result.toString());
} catch (Exception e) {
// txtprint.setText(e.getMessage());
}
請嘗試這個我的工作代碼。 只是做你必要的改變。 如果你說它直接捕獲阻塞,那就意味着它會拋出一些異常。 請試着看看那是什么。 使用asynctask作為后台線程(請求響應)
// put here your url's..
private final String URL = "http://192.192.192.192/DemoService/Demo.asmx";
private final String SOAP_ACTION = "http://tempuri.org/AndroidTestRequest";
private final String METHOD_NAME = "AndroidTestRequest";
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("User", "abcd@gmail.com");
request.addProperty("Password", "test@123");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.headerOut = new Element[1];
envelope.headerOut[0] = buildAuthHeader();
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
// you can add your properties here if you want to.
/*
* PropertyInfo cityProp = new PropertyInfo();
*
* cityProp.setType(String.class); request.addProperty(cityProp);
*/
Log.e("value of request", request.toString());
Log.e("Value of envolope ", envelope.toString());
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
try {
androidHttpTransport.call(SOAP_ACTION, envelope);
Log.i("myAppEnvelope", envelope.toString());
SoapObject response = (SoapObject) envelope.getResponse();
SoapObject object = (SoapObject) response.getProperty("value");
} catch (Exception e) {
e.printStackTrace();
}
你的soap服務是否正常運行 ?如果是,那么你必須在android中調用你的webservice thr asynctask 。 你在catch塊中獲得了什么異常 ? 檢查它會幫助你擺脫它。希望這可以幫助你。 檢查下面的代碼調用這個類方法thr asynctask
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 WebCommunication {
public static String SOAP_ACTION = "";
public static String METHOD_NAME = "";
public static String NAMESPACE = "http://tempuri.org/";
public static String URL = "http://192.168.1.108:8085/wsTrinfin/Service.asmx";//your webservice
public String CALLSOAP(String Data)
{
try {
String Result="";
METHOD_NAME = "ManageLicense";
SOAP_ACTION = "http://tempuri.org/ManageLicense";
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("Data",Data);
request.addProperty("ActivationType","Online");
request.addProperty("ValidationParameter","TABLET");
request.addProperty("SenderPhoneNumber","NA");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE aht = new HttpTransportSE(URL);
SoapPrimitive results = null;
try
{
aht.call(SOAP_ACTION, envelope);
results = (SoapPrimitive) envelope.getResponse();
}
catch (Exception e)
{
//Log.Write("Unable to connect to webservice : " +e.toString());
return "ERROR";
}
Result= results.toString();
return Result;
} catch (Exception e) {
//Log.Write("Error Occured in :"+URL+e.toString(),Log._LogLevel.NORAML);
return "ERROR";
}
}
}
public InputStream sendPOSTRequest(String strPostURL, String strParamToPost)
{
strPostURL = strPostURL.replace(" ", "%20");
DefaultHttpClient defaultHttpClient = getHttpClient();
HttpPost httpPost = new HttpPost(strPostURL);
httpPost.addHeader("Content-Type", "text/xml; charset=utf-8");
InputStream inputStream = null;
try
{
if(strParamToPost != null)
httpPost.setEntity(new StringEntity(strParamToPost));
LogUtils.info(LogUtils.SERVICE_LOG_TAG, "**Executing requst**");
HttpResponse response = defaultHttpClient.execute(httpPost);
LogUtils.info(LogUtils.SERVICE_LOG_TAG, "##Response received##");
HttpEntity entity = response.getEntity();
inputStream = entity.getContent();
}
catch (Exception e)
{
LogUtils.error("HttpHelper", "PostData Error :"+e.toString());
}
return inputStream;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.