[C#] 與Android共舞–手機post資料給Server (转帖)

最近在搞安卓,跟Server溝通是一定要的,這範例很簡單,就是我在Android 上面,透過POST 的方式傳資料給

Server ,則Server 收到值後直接回傳, Server side 是用asp.net C# 寫作..

現在直接來看Code

Server 端(C#):

建立一個echo.aspx 在aspx 得部分除了第一行全部都拿掉

只剩下:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="echo.aspx.cs" Inherits="EchoService.echo" %>

 

再來就是C# 得部分:

using System;
namespace EchoService
{

     public partial class echo : System.Web.UI.Page
     {

         protected void Page_Load(object sender, EventArgs e)
      {

         if (Request.Form.Count == 0)
        {  
          Response.Write("{}");
        }else
        {
          Response.Write(Request.Form[0]);

                        }
      }
    }
 }





 
再來就是Android 的部分:


//傳送資料回Server //urlPath: 後端網址 //data: 資料
public static String SendHttpPost(String urlPath, String data) {
  try {
    DefaultHttpClient httpclient = new DefaultHttpClient();
    HttpPost httpPostRequest = new HttpPost(urlPath);
    httpPostRequest.setEntity(new StringEntity(data, HTTP.UTF_8));
    httpPostRequest.setHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
    httpPostRequest.setHeader("Accept-Encoding", "gzip");
    HttpResponse response = (HttpResponse) httpclient
          .execute(httpPostRequest);
    HttpEntity entity = response.getEntity();
    if (entity != null) {


      InputStream instream = entity.getContent();
      Header contentEncoding = response
            .getFirstHeader("Content-Encoding");
      if (contentEncoding != null
          && contentEncoding.getValue().equalsIgnoreCase("gzip")) {
        instream = new GZIPInputStream(instream);
       }
    String resultString = convertStreamToString(instream);
    return resultString;

    }
  } catch (Exception e) {
    Log.e("WebUtil", e.toString());
  }

  return "";
}



private
static String convertStreamToString(InputStream is) {

/*

 * To convert the InputStream to String we use the

 * BufferedReader.readLine() method. We iterate until the BufferedReader

 * return null which means there's no more data to read. Each line will

 * appended to a StringBuilder and returned as String.

 *

 * (c) public domain:

 * http://senior.ceng.metu.edu.tr/2009/praeda/2009/01/

 * 11/a-simple-restful-client-at-android/

 */

BufferedReader reader = new BufferedReader(new InputStreamReader(is));

StringBuilder sb = new StringBuilder();
String line = null;

try {

  while ((line = reader.readLine()) != null) {

     sb.append(line + "\n");

  }

} catch (IOException e) {

  e.printStackTrace();

 } finally {

  try { is.close();

      } catch (IOException e) {

    e.printStackTrace();

      }

 }

return sb.toString();

}

  



呼叫方式:

 

String res = SendHttpPost( "http://swap.no2don.com/echo.aspx", "{name:'許當麻',first_name:'當麻',last_name:'許'}");

結果:

 

照片



注意事項:

 

1.其中傳輸我都是透過格式為UTF-8

 

2.網路的Permission 記得打開  需要在 AndroidManifest.xml 中加入


<uses-permission android:name="android.permission.INTERNET"/>

3.還有一個地方需再Activity 中加入:


// AllowPolicy StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy);

 

posted on 2013-11-27 00:34  王员外王爷  阅读(293)  评论(0编辑  收藏  举报

导航