资讯 手机客户端 00 : 00 : 00
圈子家园文章新帖公交查询实验室网盘教案管理上网客户端课表查询切换到宽版

127社区

 找回密码
 立即注册

只需一步,快速开始

用新浪微博连接

一步搞定

搜索
热搜: 思源楼 3+1课表 无线共享 招聘 学生会
关闭

站长推荐

亲,还没下载论坛手机客户端?跟上潮流做时尚达人。掌中乐趣无处不在,快点下载吧。

查看 »

查看: 1691|回复: 0

[教程资源] Android客户端调用Asp.net的WebService

[复制链接]
小平  

453

主题

24

听众

1万

积分

网站编辑

  • 收听TA
  • 发消息
发表于 2012-5-31 07:54:57 |显示全部楼层
本帖最后由 小平 于 2012-5-31 07:56 编辑

在Android端为了与服务器端进行通信有几种方法:1、Socket通信 2、WCF通信 3、WebService通信。因为ASP.net中发布WebService非常简单,所以我们选择用WebService来进行通信。

ASP.net服务器端的的代码准备好之后开始编写Android客户端的代码,如下:

以下是代码片段:
view plaincopy to clipboardprint?
  package com.wac.Android.TestService;
  import java.io.BufferedReader;
  import java.io.IOException;
  import java.io.InputStream;
  import java.io.InputStreamReader;
  import org.apache.http.HttpEntity;
  import org.apache.http.HttpHost;
  import org.apache.http.HttpResponse;
  import org.apache.http.client.ClientProtocolException;
  import org.apache.http.client.HttpClient;
  import org.apache.http.client.entity.UrlEncodedFormEntity;
  import org.apache.http.client.methods.HttpPost;
  import org.apache.http.entity.StringEntity;
  import org.apache.http.impl.client.DefaultHttpClient;
  import org.apache.http.protocol.HTTP;
  import org.apache.http.util.EntityUtils;
  import org.json.JSONArray;
  import org.json.JSONException;
  import org.json.JSONObject;
  import android.app.Activity;
  import android.os.Bundle;
  import android.util.Log;
  import android.view.View;
  import android.view.View.OnClickListener;
  import android.widget.TextView;
  import android.widget.Button;
  public class TestServiceActivity extends Activity {
  private static final String TAG = "TestService";
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  OnClickListener listener = new OnClickListener() {
  public void onClick(View v) {
  try {
  //1、调用不带参数的WebMethod
  final String SERVER_URL = "http://192.168.1.122:8082/WebServices/TestService.asmx/GetUserList";
  HttpPost request = new HttpPost(SERVER_URL); // 根据内容来源地址创建一个Http请求
  request.addHeader("Content-Type", "application/json; charset=utf-8");//必须要添加该Http头才能调用WebMethod时返回JSON数据
  HttpResponse httpResponse = new DefaultHttpClient().execute(request); // 发送请求并获取反馈
  // 解析返回的内容
  if (httpResponse.getStatusLine().getStatusCode() !=404) //StatusCode为200表示与服务端连接成功,404为连接不成功
  {
  //因为GetUserList返回的是List,所以该数据的JSON格式为:
  //{"d":[{"__type":"Model.ModelUser","UserName":"wa1","Password":"123"},{"__type":"Model.ModelUser","UserName":"wa2","Password":"123"}]}
  String result = EntityUtils.toString(httpResponse.getEntity());
  Log.i("result",result);// System.out.println(result);
  JSONArray resultArray=new JSONObject(result).getJSONArray("d"); //获取ModelUser类型的JSON对象数组
  TextView tv=(TextView)findViewById(R.string.textview1);
  tv.setText(((JSONObject)resultArray.get(0)).getString("UserName").toString()); //获取resultArray第0个元素中的“UserName”属性
  }
  /*
  //2、调用带参数的WebMethod
  final String SERVER_URL = "http://192.168.1.122:8082/WebServices/TestService.asmx/GetUserByUserName"; // 带参数的WebMethod
  HttpPost request = new HttpPost(SERVER_URL); // 根据内容来源地址创建一个Http请求
  request.addHeader("Content-Type", "application/json; charset=utf-8");//必须要添加该Http头才能调用WebMethod时返回JSON数据
  JSONObject jsonParams=new JSONObject();
  jsonParams.put("strUserName", "wa1");//传参,如果想传递两个参数则继续添加第二个参数jsonParams.put("param2Name","param2Value")
  HttpEntity bodyEntity =new StringEntity(jsonParams.toString(), "utf8");//参数必须也得是JSON数据格式的字符串才能传递到服务器端,否则会出现"{'Message':'strUserName是无效的JSON基元'}"的错误
  request.setEntity(bodyEntity);
  HttpResponse httpResponse = new DefaultHttpClient().execute(request); // 发送请求并获取反馈
  // 解析返回的内容
  if (httpResponse.getStatusLine().getStatusCode() !=404) //StatusCode为200表示与服务端连接成功,404为连接不成功
  {
  //因为GetUserByUserName返回的是ModelUser,所以该数据的JSON格式为:
  //{"d":{"__type":"Model.ModelUser","UserName":"wa1","Password":"123"}}
  String result = EntityUtils.toString(httpResponse.getEntity());
  Log.i("result",result);
  JSONObject resultJSON=new JSONObject(result).getJSONObject("d");//获取ModelUser类型的JSON对象
  TextView tv=(TextView)findViewById(R.string.textview1);
  tv.setText(resultJSON.getString("UserName").toString());
  Log.i("resultJSON",resultJSON);
  }
  */
  } catch (Exception e) {}
  }};
  Button button = (Button) findViewById(R.id.button1);
  button.setOnClickListener(listener);
  }
  }
  package com.wac.Android.TestService;
  import java.io.BufferedReader;
  import java.io.IOException;
  import java.io.InputStream;
  import java.io.InputStreamReader;
  import org.apache.http.HttpEntity;
  import org.apache.http.HttpHost;
  import org.apache.http.HttpResponse;
  import org.apache.http.client.ClientProtocolException;
  import org.apache.http.client.HttpClient;
  import org.apache.http.client.entity.UrlEncodedFormEntity;
  import org.apache.http.client.methods.HttpPost;
  import org.apache.http.entity.StringEntity;
  import org.apache.http.impl.client.DefaultHttpClient;
  import org.apache.http.protocol.HTTP;
  import org.apache.http.util.EntityUtils;
  import org.json.JSONArray;
  import org.json.JSONException;
  import org.json.JSONObject;
  import android.app.Activity;
  import android.os.Bundle;
  import android.util.Log;
  import android.view.View;
  import android.view.View.OnClickListener;
  import android.widget.TextView;
  import android.widget.Button;
  public class TestServiceActivity extends Activity {
  private static final String TAG = "TestService";
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  OnClickListener listener = new OnClickListener() {
  public void onClick(View v) {
  try {
  //1、调用不带参数的WebMethod
  final String SERVER_URL = "http://192.168.1.122:8082/WebServices/TestService.asmx/GetUserList";
  HttpPost request = new HttpPost(SERVER_URL); // 根据内容来源地址创建一个Http请求
  request.addHeader("Content-Type", "application/json; charset=utf-8");//必须要添加该Http头才能调用WebMethod时返回JSON数据
  HttpResponse httpResponse = new DefaultHttpClient().execute(request); // 发送请求并获取反馈
  // 解析返回的内容
  if (httpResponse.getStatusLine().getStatusCode() !=404) //StatusCode为200表示与服务端连接成功,404为连接不成功
  {
  //因为GetUserList返回的是List,所以该数据的JSON格式为:
  //{"d":[{"__type":"Model.ModelUser","UserName":"wa1","Password":"123"},{"__type":"Model.ModelUser","UserName":"wa2","Password":"123"}]}
  String result = EntityUtils.toString(httpResponse.getEntity());
  Log.i("result",result);// System.out.println(result);
  JSONArray resultArray=new JSONObject(result).getJSONArray("d"); //获取ModelUser类型的JSON对象数组
  TextView tv=(TextView)findViewById(R.string.textview1);
  tv.setText(((JSONObject)resultArray.get(0)).getString("UserName").toString()); //获取resultArray第0个元素中的“UserName”属性
  }
  /*
  //2、调用带参数的WebMethod
  final String SERVER_URL = "http://192.168.1.122:8082/WebServices/TestService.asmx/GetUserByUserName"; // 带参数的WebMethod
  HttpPost request = new HttpPost(SERVER_URL); // 根据内容来源地址创建一个Http请求
  request.addHeader("Content-Type", "application/json; charset=utf-8");//必须要添加该Http头才能调用WebMethod时返回JSON数据
  JSONObject jsonParams=new JSONObject();
  jsonParams.put("strUserName", "wa1");//传参,如果想传递两个参数则继续添加第二个参数jsonParams.put("param2Name","param2Value")
  HttpEntity bodyEntity =new StringEntity(jsonParams.toString(), "utf8");//参数必须也得是JSON数据格式的字符串才能传递到服务器端,否则会出现"{'Message':'strUserName是无效的JSON基元'}"的错误
  request.setEntity(bodyEntity);
  HttpResponse httpResponse = new DefaultHttpClient().execute(request); // 发送请求并获取反馈
  // 解析返回的内容
  if (httpResponse.getStatusLine().getStatusCode() !=404) //StatusCode为200表示与服务端连接成功,404为连接不成功
  {
  //因为GetUserByUserName返回的是ModelUser,所以该数据的JSON格式为:
  //{"d":{"__type":"Model.ModelUser","UserName":"wa1","Password":"123"}}
  String result = EntityUtils.toString(httpResponse.getEntity());
  Log.i("result",result);
  JSONObject resultJSON=new JSONObject(result).getJSONObject("d");//获取ModelUser类型的JSON对象
  TextView tv=(TextView)findViewById(R.string.textview1);
  tv.setText(resultJSON.getString("UserName").toString());
  Log.i("resultJSON",resultJSON);
  }
  */
  } catch (Exception e) {}
  }};
  Button button = (Button) findViewById(R.id.button1);
  button.setOnClickListener(listener);
  }
  }
  至此,客户端访问服务端的代码已经完成。


客户端, Android

相关帖子

学无止境,勇攀高峰!我们应该给予学生钥匙和打开知识宝库的方法,而不是宝库本身。
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

插件友情推广计划插件友情推广计划插件友情推广计划

手机客户端|Archiver| 127社区-重庆科创职业学院论坛 ( 渝ICP备10016736号 )   |   

GMT+8, 2014-2-23 16:15

回顶部