读书人

AsyncTask调用webservice数据报空指针

发布时间: 2013-10-16 11:29:46 作者: rapoo

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/能访问吗?
[解决办法]
连接后,看返回的响应码是多少

读书人网 >Android

热点推荐