gpt4 book ai didi

Android AsyncTask SoapObject 请求问题

转载 作者:太空狗 更新时间:2023-10-29 12:47:16 26 4
gpt4 key购买 nike

我想在我的 Android 应用程序中使用 .net 网络服务。我使用 asynctask 向 Web 服务发送请求。但是 request 没有正确地获取值(value)。我在许多 Android 应用程序中使用了这种结构,但我从来没有遇到过这样的错误。有什么问题?

我有权限(互联网)。命名空间和方法名都是真的。

    public class MainActivity extends Activity {

private static final String NAMESPACE = "http://tempuri.org/";
private static final String URL = "http://service.melihmucuk.com/ShopArWS.asmx";
private String[][] items;

private String[][] GetAllItems(){

SoapObject request = new SoapObject(NAMESPACE, "GetAllItem");//faulty line
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.debug = true;

try {

androidHttpTransport.call("http://tempuri.org/GetAllItem", envelope);
SoapObject response = (SoapObject) envelope.getResponse();
items[0] = new String[response.getPropertyCount()]; //item_id
items[1] = new String[response.getPropertyCount()]; //price
items[2] = new String[response.getPropertyCount()]; //title
items[3] = new String[response.getPropertyCount()]; //desc

for(int i=0;i<response.getPropertyCount();i++){
Object property = response.getProperty(i);
if(property instanceof SoapObject){
SoapObject item = (SoapObject) property;
String item_id = item.getProperty("item_id").toString();
String price = item.getProperty("price").toString();
String title = item.getProperty("title").toString();
String desc = item.getProperty("desc").toString();

items[0][i] = item_id;
items[1][i] = price;
items[2][i] = title;
items[3][i] = desc;
}
}
}
catch (Exception e) {
e.printStackTrace();
}
return items;
}

public class GetAllItemsAS extends AsyncTask<String,String,String[][]>{



@Override
protected void onPreExecute() {

}

@Override
protected String[][] doInBackground(String... params) {
GetAllItems();
return items;
}

protected void onPostExecute(String[][] items){
ASFinish();

}
}

public void ASFinish(){
ListView liste = (ListView)findViewById(R.id.listView1);
ListArrayAdapter adapter = new ListArrayAdapter(MainActivity.this,items[0],items[1],items[2],items[3]);
liste.setAdapter(adapter);
}



@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

items = new String[4][0];
new GetAllItemsAS().execute();

}
}

我的日志

05-22 01:07:10.201: E/WindowManager(22337): Activity com.zontul.shopar.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@414ba3a0 that was originally added here
05-22 01:07:10.201: E/WindowManager(22337): android.view.WindowLeaked: Activity com.zontul.shopar.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@414ba3a0 that was originally added here
05-22 01:07:10.201: E/WindowManager(22337): at android.view.ViewRootImpl.<init>(ViewRootImpl.java:464)
05-22 01:07:10.201: E/WindowManager(22337): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:419)
05-22 01:07:10.201: E/WindowManager(22337): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:351)
05-22 01:07:10.201: E/WindowManager(22337): at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:171)
05-22 01:07:10.201: E/WindowManager(22337): at android.view.Window$LocalWindowManager.addView(Window.java:558)
05-22 01:07:10.201: E/WindowManager(22337): at android.app.Dialog.show(Dialog.java:282)
05-22 01:07:10.201: E/WindowManager(22337): at com.zontul.shopar.MainActivity$GetAllItemsAS.onPreExecute(MainActivity.java:78)
05-22 01:07:10.201: E/WindowManager(22337): at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586)
05-22 01:07:10.201: E/WindowManager(22337): at android.os.AsyncTask.execute(AsyncTask.java:534)
05-22 01:07:10.201: E/WindowManager(22337): at com.zontul.shopar.MainActivity.onCreate(MainActivity.java:115)
05-22 01:07:10.201: E/WindowManager(22337): at android.app.Activity.performCreate(Activity.java:5066)
05-22 01:07:10.201: E/WindowManager(22337): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1101)
05-22 01:07:10.201: E/WindowManager(22337): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2311)
05-22 01:07:10.201: E/WindowManager(22337): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2391)
05-22 01:07:10.201: E/WindowManager(22337): at android.app.ActivityThread.access$600(ActivityThread.java:151)
05-22 01:07:10.201: E/WindowManager(22337): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1335)
05-22 01:07:10.201: E/WindowManager(22337): at android.os.Handler.dispatchMessage(Handler.java:99)
05-22 01:07:10.201: E/WindowManager(22337): at android.os.Looper.loop(Looper.java:155)
05-22 01:07:10.201: E/WindowManager(22337): at android.app.ActivityThread.main(ActivityThread.java:5520)
05-22 01:07:10.201: E/WindowManager(22337): at java.lang.reflect.Method.invokeNative(Native Method)
05-22 01:07:10.201: E/WindowManager(22337): at java.lang.reflect.Method.invoke(Method.java:511)
05-22 01:07:10.201: E/WindowManager(22337): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1029)
05-22 01:07:10.201: E/WindowManager(22337): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:796)
05-22 01:07:10.201: E/WindowManager(22337): at dalvik.system.NativeStart.main(Native Method)

编辑:我编辑了我的代码,但我没有使用对话框。请不要写关于对话的答案。对话不会出现问题。

最佳答案

您需要在 onPreExecute 中而不是在类级别初始化 ProgressDialog:

private ProgressDialog dialog;  //declare here

@Override
protected void onPreExecute() {
dialog = new ProgressDialog(MainActivity.this); //<< initialize here
dialog.setMessage("Loading...");
dialog.show();
}
//.....
protected void onPostExecute(String[][] items){
ASFinish();
if(null !=dialog)
if(dialog.isShowing())
dialog.dismiss();
}

关于Android AsyncTask SoapObject 请求问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16680546/

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