当我尝试在线下
之后在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());
}
答案 0 :(得分:2)
请尝试这个我的工作代码。只是做你必要的改变。 如果你说它会直接阻止阻塞,那就意味着它会抛出一些异常。请试着看看它是什么。 使用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();
}
答案 1 :(得分:0)
您的soap服务是否正常运行?如果是那么您必须在android中调用 webservice thr asynctask 。什么是异常你进入了阻止?检查它会帮助你摆脱它。希望这有助于你。检查下面的代码调用这个类方法thr asynctask < / p>
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";
}
}
}
答案 2 :(得分:0)
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;
}