gpt4 book ai didi

java - 无法获取Web服务的输出

转载 作者:行者123 更新时间:2023-12-01 13:54:42 25 4
gpt4 key购买 nike

我有一个类旨在访问我的 Web 服务方法。问题是当我尝试在异步调用中访问 Web 服务方法的输出时,它是空的。我该怎么办?
这是我的网络服务类:

package ClassLibrary;

public class WebService {
private String namespace="";
private String url="";

public WebService(String namespace,String url) {
super();
this.namespace = namespace;
this.url = url;
}

public String CallMethod(String methodName,PropertyInfo pi) {
String result = "default";
SoapObject request = new SoapObject(namespace, methodName);
request.addProperty(pi);

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(url);
try {
androidHttpTransport.call(namespace+methodName, envelope);
SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
result= response.toString();

} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}

这就是我尝试调用网络服务的方式:

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

private ProgressDialog dialog;
private Activity activity;
public String wsOutput="";
public String methodName="";
private WebService ws;

public AsyncCallWS(Activity activity,String methodName) {
this.activity = activity;
this.dialog = new ProgressDialog(activity);
this.methodName = methodName;
}

@Override
protected Void doInBackground(String... params) {
ws = new WebService(PublicVariable.NAMESPACE, PublicVariable.URL);
PropertyInfo pi= new PropertyInfo();
pi.setName("UserID");
pi.setValue("1");
pi.setType(String.class);
wsOutput=ws.CallMethod("GetPersonalInfo", pi);

return null;
}

@Override
protected void onPostExecute(Void result) {
if (this.dialog.isShowing()) {
this.dialog.dismiss();
}

if (methodName == "GetPersonalInfo") {
Log.d("Ehsan","OUTPUT IS:"+ wsOutput);
}
}
}

最佳答案

异步任务使用的三种类型如下:

  • Params,执行时发送给任务的参数类型。

  • Progress,后台计算时发布的进度单位类型。

  • Result,后台计算结果的类型。

onPostExecute(Result) 在后台计算完成后在 UI 线程上调用。后台计算的结果作为参数传递到此步骤,并且您没有传递结果值。

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

private ProgressDialog dialog;
private Activity activity;
public String methodName="";
private WebService ws;

public AsyncCallWS(Activity activity,String methodName) {
this.activity = activity;
this.dialog = new ProgressDialog(activity);
this.methodName = methodName;
}

@Override
protected Void doInBackground(String... params) {
ws = new WebService(PublicVariable.NAMESPACE, PublicVariable.URL);
PropertyInfo pi= new PropertyInfo();
pi.setName("UserID");
pi.setValue("1");
pi.setType(String.class);

String wsOutput = ws.CallMethod("GetPersonalInfo", pi);

return wsOutput;
}

@Override
protected void onPostExecute(String result) {

if (this.dialog.isShowing()) {
this.dialog.dismiss();
}

Log.d("Ehsan","OUTPUT IS:"+ result);
}
}

关于java - 无法获取Web服务的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19677723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com