[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" %>
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]);
}
}
}
}
//傳送資料回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:'許'}");
結果:
<uses-permission android:name="android.permission.INTERNET"/>
// AllowPolicy StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy);