首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

AsyncTask调用webservice数据报空指针,该如何解决

2013-10-16 
AsyncTask调用webservice数据报空指针package Telephone.testimport java.io.IOExceptionimport java.ut

AsyncTask调用webservice数据报空指针

package Telephone.test;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserException;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
public class TelephoneActivity extends Activity {
    /** Called when the activity is first created. */
    private EditText usernameEditText;
    private Button queryButton;
    private ListView newslist;
    
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
setContentView(R.layout.main);

usernameEditText = (EditText) findViewById(R.id.phone_sec); 
final ListView newslist=(ListView)findViewById(R.id.listview);
        queryButton = (Button) findViewById(R.id.query_btn);
        queryButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
    String username =usernameEditText.getText().toString().trim();
        PageTask task=new PageTask();
task.execute(username);
}
});
        
        newslist.setOnItemClickListener(new OnItemClickListener(){

           @SuppressWarnings("unchecked")
           public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            ListView listView = (ListView)parent;
            HashMap<String, String> map = (HashMap<String, String>) listView.getItemAtPosition(position);
            String userid = map.get("tasktitle");
           
            Toast.makeText(TelephoneActivity.this, userid +"  " ,Toast.LENGTH_LONG).show();
           }
                });
}
   
        class PageTask extends AsyncTask<String, Integer, List<HashMap<String, Object>>> {


         @Override
 protected List<HashMap<String, Object>> doInBackground(String... params) {

          List<HashMap<String,  Object>> newslist2=new ArrayList<HashMap<String, Object>>();
            
          // 命名空间
        String nameSpace="http://tempuri.org/";
        // 调用的方法名称
        String methodName="GetTaskUserName";
        // EndPoint
        String endPoint="http://192.168.0.100:8081/WebService.asmx";
        // SOAP Action
        String soapAction="http://tempuri.org/GetTaskUserName";
              // 指定WebService的命名空间和调用的方法名
        SoapObject rpc = new SoapObject(nameSpace, methodName);
              // 设置需调用WebService接口需要传入的两个参数mobileCode、userId
        rpc.addProperty("username", params[0]);
             // 生成调用WebService方法的SOAP请求信息,并指定SOAP的版本
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER12);


              envelope.bodyOut = rpc;
        // 设置是否调用的是dotNet开发的WebService
        envelope.dotNet = true;
              envelope.setOutputSoapObject(rpc);
              HttpTransportSE transport = new HttpTransportSE(endPoint);
              transport.debug=true;
              try {
transport.call(soapAction, envelope);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
              // 获取返回的数据
              SoapObject object = (SoapObject)envelope.bodyIn;
              String result=object.getProperty(0).toString();
              JSONObject demoJson = null;
try {
demoJson = new JSONObject(result);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
              JSONArray numberList = null;
try {
numberList = demoJson.getJSONArray("T1");
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
               for(int i=0; i<numberList.length(); i++)
               {
                   HashMap<String, Object> hashMap=new HashMap<String, Object>();
               try {
hashMap.put("tasktitle", numberList.getJSONObject(i).getString("TaskTitle"));
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
                   newslist2.add(hashMap);
               }
               return newslist2;


         @Override
protected void onPostExecute(List<HashMap<String, Object>> result) {
SimpleAdapter newslistAdapter=new SimpleAdapter(TelephoneActivity.this,result,R.layout.item,new String[]{"tasktitle"},new int[]{R.id.task_title});
        newslist.setAdapter(newslistAdapter);
super.onPostExecute(result);
}
      }
          
       
            
}


[解决办法]
http://192.168.0.100:8081/能访问吗?
[解决办法]
连接后,看返回的响应码是多少

热点排行