Android封装WebService的简单调用并且实时更新新UI
Android封装WebService的简单调用并且实时更新新UI
最近做一个电力项目的客户端,要求是全部使用webservice调用他们的服务端的数据,然后展现出来。所以我就封装了一个调用webservice的类,这个还是比较的简单的类,没有多牛的地方。其中,项目中一个模块就是实时获取运营总览的一些情况,这又用到handler。下面就是相关代码,代码还有许多要完善的地方,请指出。
- public class HandlerService{
- private String jsonUrl; //webservice查询地址
- private String jsonParames; //查询参数
- private String queryMethod; //调用方法
- private String nameSpace; //命名空间
- private String queryProperty;//查询属性
- private String json;
- private SoapObject soapObject;
- private boolean isProperty; //请求是否带有参数
- public HandlerService(String jsonUrl, String jsonParames,
- String queryMethod, String nameSpace, String queryProperty,boolean isProperty) {
- super();
- this.jsonUrl = jsonUrl;
- this.jsonParames = jsonParames;
- this.queryMethod = queryMethod;
- this.nameSpace = nameSpace;
- this.queryProperty = queryProperty;
- this.isProperty = isProperty;
- getSoap();
- }
- public void testupdate(){
- System.out.println("testupdate");
- }
- private void getSoap(){
- SoapObject request = new SoapObject(nameSpace,queryMethod);
- if(this.isProperty){
- request.addProperty(queryProperty, jsonParames);
- }
- SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10);
- envelope.bodyOut = request;
- envelope.setOutputSoapObject(request);
- envelope.encodingStyle="UTF-8";
- HttpTransportSE ht = new HttpTransportSE(jsonUrl);
- try {
- ht.call(null, envelope);
- soapObject = (SoapObject) envelope.bodyIn;
- json=soapObject.getProperty("out").toString();
- System.out.println("soapObject="+soapObject.getProperty("out").toString());
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (XmlPullParserException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- /**
- * 获得JSON传来的数据,便于外部调用
- */
- public String getJson(){
- return this.json;
- }
- }
下面是HTTP请求的相关类:HttpConnectResponse.java
- public class HttpConnectResponse {
- //httpCode=10000;这个的意义就是告诉外部,调用产生了异常
- public static int HttpIsAlive(String url){
- int httpCode;//HTTP连接状态码
- //创建Http Get连接
- HttpGet httpRequest = new HttpGet( url );
- try
- {
- //发出HTTP request
- HttpResponse httpResponse = new DefaultHttpClient().execute( httpRequest );
- httpCode=httpResponse.getStatusLine().getStatusCode();
- }
- catch ( ClientProtocolException e )
- {
- httpCode=10000;
- System.out.println("ClientProtocolException");
- //System.out.println( e.getMessage().toString() );
- e.printStackTrace();
- }
- catch ( IOException e )
- {
- httpCode=10000;
- }
- catch ( Exception e )
- {
- httpCode=10000;
- e.printStackTrace();
- }
- return httpCode;
- }
- }
最后是调用的类
- public class PhoneRecordActivity extends Activity implements Runnable{
- private static final String URL="xxxxxxx";
- private String PhoneRecordString; //从服务端返回的JSON字符串
- private HandlerService handlerService;
- private JSONObject json;
- private int isQueryNetOk = 1;
- private Handler handler;
- int i=1;
- //private
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- this.setContentView(R.layout.phonerecord_view);
- /* 初始化View */
- initView();
- Toast.makeText(PhoneRecordActivity.this, "数据加载中......", Toast.LENGTH_LONG).show();
- handler = new Handler();
- handler.postDelayed(this,1000);
- }
- public void run() {
- // TODO Auto-generated method stub
- // phonerecord_id.setText(i++ + "");
- System.out.println("HttpIsAlive="
- + HttpConnectResponse.HttpIsAlive(URL + "?wsdl"));
- int HttpIsAlive = 0;
- try{
- do {
- HttpIsAlive = HttpConnectResponse.HttpIsAlive(URL + "?wsdl");
- isQueryNetOk++;
- System.out.println("isQueryNetOk="+isQueryNetOk);
- handler.postDelayed(this, 1000);
- } while (isQueryNetOk < 2 && HttpIsAlive != 200); //就使用一次请求
- if (HttpIsAlive == 200) {
- showJsonData();
- }else{
- handler.removeCallbacks(this);
- Toast.makeText(PhoneRecordActivity.this,"网络有问题",Toast.LENGTH_LONG).show();
- }
- }catch(Exception e){
- handler.removeCallbacks(this);
- Toast.makeText(PhoneRecordActivity.this,"网络有问题",Toast.LENGTH_LONG).show();
- }
- }
- private void showJsonData(){
- handlerService = new HandlerService(URL,
- "{/"pwd/":/"123123/",/"userName/":/"0224809111/",/"date/":/"201105/"}",
- "queryCallOperation",
- "http://webservice.service.system.dlsh.syit.com",
- "jsonString",
- false
- );
- PhoneRecordString = handlerService.getJson();
- System.out.println("PhoneRecordString="+PhoneRecordString);
- try {
- json = new JSONObject(PhoneRecordString);
- multimediaNum = json.getString("multimediaNum");
- } catch (JSONException e) {
- // TODO Auto-generated catch block
- //e.printStackTrace();
- }catch (Exception e) {
- }
- XX.settext("dddddddddddd");//更新页面
- }
- private void initView() {
- }
- }
因为还在项目中,所以不能公布完整的,只能说个大概,也请高手指点其中的不足。另外,webservice需要ksop2大家可以去自己下载。
评论暂时关闭