綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[資料] android通過post傳遞字節流

[複製連結] 查看: 8132|回覆: 20|好評: 0
跳轉到指定樓層
樓主
暗桌之光 | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2011-6-23 15:38

馬上加入Android 台灣中文網,立即免費下載應用遊戲。

您需要 登錄 才可以下載或查看,沒有帳號?註冊

x
最近在開發中,手機端需要想服務器端提交數據,想採用post請求,想服務器端傳遞字節流,過做了一個技術原型,見下面代碼:
  1. @Override
  2.     public void onCreate(Bundle savedInstanceState) {
  3.         super.onCreate(savedInstanceState);
  4.         setContentView(R.layout.main);
  5.         post(getData(), "http://wangjun.easymorse.com");
  6.     }
  7.     public byte[] getData()
  8.     {
  9.         ByteArrayOutputStream arrayOutputStream=new ByteArrayOutputStream();
  10.         DataOutputStream dataOutputStream=new DataOutputStream(arrayOutputStream);
  11.         try {
  12.             dataOutputStream.writeShort(8);
  13.             dataOutputStream.writeUTF("wangjun");
  14.             dataOutputStream.flush();
  15.             dataOutputStream.close();
  16.         } catch (Exception e) {
  17.             throw new RuntimeException(e);
  18.         }
  19.         return arrayOutputStream.toByteArray();
  20.     }
  21.     public boolean post(byte[] paramArrayOfByte,String http)
  22.     {
  23.         ByteArrayEntity arrayEntity=new ByteArrayEntity(paramArrayOfByte);
  24.         arrayEntity.setContentType("application/octet-stream");
  25.         HttpPost httpPost=new HttpPost(http);
  26.         httpPost.setEntity(arrayEntity);
  27.         DefaultHttpClient client=new DefaultHttpClient();
  28.         try {
  29.             int result=client.execute(httpPost).getStatusLine().getStatusCode();
  30.             Log.i("huilurry","]]]="+result);
  31.         } catch (Exception e) {
  32.             throw new RuntimeException(e);
  33.         }
  34.         return false;
  35.     }
複製代碼
最後結果:

「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)

評分

參與人數 7碎鑽 +8 幫助 +6 收起 理由
hshengwen + 1 好內容。朕有賞,還不謝主隆恩.
萬問候 + 1 聽說評分可以懷孕,你就讓我試試吧.
spigbbbbb + 1 + 1 非常讚
lovejane750728 + 1 + 1 非常讚
vicent-yang + 1 + 1 非常讚
idvtw + 1
y776 + 5 贊一個!

查看全部評分

收藏收藏7 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
沙發
vicwang2006 | 收聽TA | 只看該作者
發表於 2011-8-4 11:24
雖然不識很懂
但還是覺得很酷...
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

板凳
handsome.7 | 收聽TA | 只看該作者
發表於 2011-10-26 13:50
11-16改一下會比較好唷
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

地板
ploglin | 收聽TA | 只看該作者
發表於 2011-10-26 14:32
本帖最後由 ploglin 於 2011-10-26 14:33 編輯

我也分享我的作法,但我沒有把功能獨立出來
  1. HttpClient httpclient = new DefaultHttpClient();
  2. HttpPost httppost = new HttpPost("http://xxx.xxx.com.tw/xxxx/xxxxb.php");

  3. List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
  4. nameValuePairs.add(new BasicNameValuePair("a", "a"));
  5. nameValuePairs.add(new BasicNameValuePair("b", "b"));
  6. try {
  7.         httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, HTTP.UTF_8));
  8.         httppost.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 5.1; rv:7.0) Gecko/20100101 Firefox/7.0");
  9.         httppost.addHeader("Referer", "http://xxx.xxx.com.tw/xxxx/xxxxa.php");
  10.         HttpResponse response = httpclient.execute(httppost);

  11.         HttpEntity resEntity = response.getEntity();
  12.         StringBuilder sb = new StringBuilder();
  13.         if (resEntity != null) {
  14.                 InputStream is = resEntity.getContent();
  15.                 BufferedReader reader = new BufferedReader(new InputStreamReader(is, "big5"));
  16.                 String line = null;
  17.                 while ((line = reader.readLine()) != null) {
  18.                         sb.append(line);
  19.                 }
  20.         }
  21.         Bundle bundle = new Bundle();
  22.         bundle.putString("data", sb.toString());
  23. } catch (UnsupportedEncodingException e) {
  24.         // TODO Auto-generated catch block
  25.         Log.e(TAG, e.getMessage());
  26. } catch (ClientProtocolException e) {
  27.         // TODO Auto-generated catch block
  28.         Log.e(TAG, e.getMessage());
  29. } catch (IOException e) {
  30.         // TODO Auto-generated catch block
  31.         Log.e(TAG, e.getMessage());
  32. }

複製代碼
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

5
chenyuwen | 收聽TA | 只看該作者
發表於 2012-4-8 11:31
看沒!這個是什麼?
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

6
mac999 | 收聽TA | 只看該作者
發表於 2012-6-28 11:16
提示: 作者被禁止或刪除 內容自動屏蔽
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

7
eric620324 | 收聽TA | 只看該作者
發表於 2012-7-31 09:37
我是外行人...抱歉.........."礦摩"[/color]
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

8
biglion605 | 收聽TA | 只看該作者
發表於 2012-11-1 09:20
剛好需要  感恩
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

9
sky79915 | 收聽TA | 只看該作者
發表於 2012-11-1 16:37
看來我需要加強了........
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

10
sam950511 | 收聽TA | 只看該作者
發表於 2012-11-1 23:13

謝謝大大的分享
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則