導航:首頁 > 網路安全 > android如何請求網路

android如何請求網路

發布時間:2022-07-28 23:20:13

A. android 中怎麼寫好網路請求框架

Android程序最重要的模塊就是網路部分,如何從網路上下載數據,如何將處理過的數據上傳至網路,往往是android程序的關鍵環節。
Android原生提供基於HttpClient和HttpUrlConnection的兩種網路訪問方式。利用原生的這兩種方式編寫網路代碼,需要自己考慮很多,獲取數據或許可以,但是如果要將手機本地數據上傳至網路,根據不同的web端介面,需要組織不同的數據內容上傳,給手機端造成了很大的工作量。
目前有幾種快捷的網路開發開源框架,給我們提供了非常大的便利,他們應該是android網路處理部分開源框架的前三名。
1.https://github.com/loopj/android-async-http

loopj這款開源框架一直是我鍾愛的網路框架,在我寫過的相當多的程序中,一直使用該框架,以至於對這個框架產生了厭倦的情緒。
太詳細的使用文檔,太簡單的使用方式,它就像是一門高級語言,定製好了所有的東西,你只需要拼湊一下就能夠處理,所以你想定製更加細節的操作,只有自己動手,反而造成了一些不必要的麻煩。
loopj在前一段時間對https的支持並不好,如果要支持https,則需要費點功夫。
1.4幾個版本的升級對前部分代碼的承接性不夠好,造成了我對這個框架的厭倦。

B. android post網路數據的請求

public static String HttpPostMethod(String get_url,
List<NameValuePair> params) {
String result = "";
HttpParams basicHttpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(basicHttpParams, 15 * 1000);
HttpConnectionParams.setSoTimeout(basicHttpParams, 15 * 1000);
HttpClient htc = new DefaultHttpClient(basicHttpParams);
HttpResponse httpResponse = null;
try {
HttpPost httpPost = new HttpPost(get_url);
// response = htc.execute(request);
// 設置httpPost請求參數
// 創建參數隊列
httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded");//json
httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
// httpResponse = new DefaultHttpClient().execute(httpPost);
httpResponse = htc.execute(httpPost);
// System.out.println(httpResponse.getStatusLine().getStatusCode());
Log.d("zh1", get_url+" " + httpResponse.getStatusLine().getStatusCode());
if (httpResponse.getStatusLine().getStatusCode() == 200) {
// 第三步,使用getEntity方法活得返回結果
result = EntityUtils.toString(httpResponse.getEntity(), HTTP.UTF_8);
if(result==null||result.equals("")){
return null;
}
}else{
return null;
}
} catch (ClientProtocolException e) {
e.printStackTrace();
result = null;
} catch (IOException e) {
e.printStackTrace();
result = null;
}
return result;
}

C. android如何訪問本地網路

如果你是打算用手機測試移動版網頁的話(同區域網手機訪問pc上的html)。
那可以將區域網內的設備都設置成靜態ip。然後使用iis或php環境將網頁放到站點目錄下。
然後就可以通過ip進行訪問了。
如果你打算用手機訪問手機上的html頁面
那你可以安裝一個AndroPHP 然後將html頁面放到站點目錄下。然後使用給定的ip訪問即可

D. android網路請求的幾種方式有哪些什麼不同

參考內容如下:
Android應用經常會和伺服器端交互,這就需要手機客戶端發送網路請求,下面介紹四種常用網路請求方式,我這邊是通過Android單元測試來完成這四種方法的,還不清楚Android的單元測試的同學們請看Android開發技巧總結中的Android單元測試的步驟一文。

java.net包中的HttpURLConnection類

Get方式:

// Get方式請求
public static void requestByGet() throws Exception {
String path = "https://reg.163.com/logins.jsp?id=helloworld&pwd=android";
// 新建一個URL對象
URL url = new URL(path);
// 打開一個HttpURLConnection連接
HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
// 設置連接超時時間
urlConn.setConnectTimeout(5 * 1000);
// 開始連接
urlConn.connect();
// 判斷請求是否成功
if (urlConn.getResponseCode() == HTTP_200) {
// 獲取返回的數據
byte[] data = readStream(urlConn.getInputStream());
Log.i(TAG_GET, "Get方式請求成功,返回數據如下:");
Log.i(TAG_GET, new String(data, "UTF-8"));
} else {
Log.i(TAG_GET, "Get方式請求失敗");
}
// 關閉連接
urlConn.disconnect();
}

Post方式:

// Post方式請求
public static void requestByPost() throws Throwable {
String path = "https://reg.163.com/logins.jsp";
// 請求的參數轉換為byte數組
String params = "id=" + URLEncoder.encode("helloworld", "UTF-8")
+ "&pwd=" + URLEncoder.encode("android", "UTF-8");
byte[] postData = params.getBytes();
// 新建一個URL對象
URL url = new URL(path);
// 打開一個HttpURLConnection連接
HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
// 設置連接超時時間
urlConn.setConnectTimeout(5 * 1000);
// Post請求必須設置允許輸出
urlConn.setDoOutput(true);
// Post請求不能使用緩存
urlConn.setUseCaches(false);
// 設置為Post請求
urlConn.setRequestMethod("POST");
urlConn.setInstanceFollowRedirects(true);
// 配置請求Content-Type
urlConn.setRequestProperty("Content-Type",
"application/x-www-form-urlencode");
// 開始連接
urlConn.connect();
// 發送請求參數
DataOutputStream dos = new DataOutputStream(urlConn.getOutputStream());
dos.write(postData);
dos.flush();
dos.close();
// 判斷請求是否成功
if (urlConn.getResponseCode() == HTTP_200) {
// 獲取返回的數據
byte[] data = readStream(urlConn.getInputStream());
Log.i(TAG_POST, "Post請求方式成功,返回數據如下:");
Log.i(TAG_POST, new String(data, "UTF-8"));
} else {
Log.i(TAG_POST, "Post方式請求失敗");
}
}

org.apache.http包中的HttpGet和HttpPost類

Get方式:

// HttpGet方式請求
public static void requestByHttpGet() throws Exception {
String path = "https://reg.163.com/logins.jsp?id=helloworld&pwd=android";
// 新建HttpGet對象
HttpGet httpGet = new HttpGet(path);
// 獲取HttpClient對象
HttpClient httpClient = new DefaultHttpClient();
// 獲取HttpResponse實例
HttpResponse httpResp = httpClient.execute(httpGet);
// 判斷是夠請求成功
if (httpResp.getStatusLine().getStatusCode() == HTTP_200) {
// 獲取返回的數據
String result = EntityUtils.toString(httpResp.getEntity(), "UTF-8");
Log.i(TAG_HTTPGET, "HttpGet方式請求成功,返回數據如下:");
Log.i(TAG_HTTPGET, result);
} else {
Log.i(TAG_HTTPGET, "HttpGet方式請求失敗");
}
}

Post方式:

// HttpPost方式請求
public static void requestByHttpPost() throws Exception {
String path = "https://reg.163.com/logins.jsp";
// 新建HttpPost對象
HttpPost httpPost = new HttpPost(path);
// Post參數
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("id", "helloworld"));
params.add(new BasicNameValuePair("pwd", "android"));
// 設置字元集
HttpEntity entity = new UrlEncodedFormEntity(params, HTTP.UTF_8);
// 設置參數實體
httpPost.setEntity(entity);
// 獲取HttpClient對象
HttpClient httpClient = new DefaultHttpClient();
// 獲取HttpResponse實例
HttpResponse httpResp = httpClient.execute(httpPost);
// 判斷是夠請求成功
if (httpResp.getStatusLine().getStatusCode() == HTTP_200) {
// 獲取返回的數據
String result = EntityUtils.toString(httpResp.getEntity(), "UTF-8");
Log.i(TAG_HTTPGET, "HttpPost方式請求成功,返回數據如下:");
Log.i(TAG_HTTPGET, result);
} else {
Log.i(TAG_HTTPGET, "HttpPost方式請求失敗");
}
}

以上是一些部分代碼,測試的時候在測試類中運行對應的測試方法即可。

E. Android用到的幾種網路請求方式

HttpURLConnection書寫時比較繁瑣,但運行效率較高 ;
HttpClient書寫變的容易,並且便於理解,運行效率不如HttpURLConnection。

F. 如何在Android開發中用HttpClient連接網路數據

  1. 在Android的project的文件清單配置好網路許可權;

  2. 找一個可用的介面url;

  3. 下面貼個代碼,主要是這幾步:

  4. //用HttpClient發送請求,分為五步
    //第一步:創建HttpClient對象
    HttpClienthttpCient=newDefaultHttpClient();
  5. //第二步:創建代表請求的對象,參數是訪問的伺服器地址
    HttpGethttpGet=newHttpGet("http://www..com");
    try{
    //第三步:執行請求,獲取伺服器發還的相應對象
    HttpResponsehttpResponse=httpCient.execute(httpGet);
    //第四步:檢查相應的狀態是否正常:檢查狀態碼的值是200表示正常
    if(httpResponse.getStatusLine().getStatusCode()==200){
    //第五步:從相應對象當中取出數據,放到entity當中
    HttpEntityentity=httpResponse.getEntity();
    Stringresponse=EntityUtils.toString(entity,"utf-8");//將entity當中的數據轉換為字元串
    }
  6. 這里要注意,如果在安卓裡面記得用子線程進行網路請求!

G. android 開發.怎麼訪問移動網路

APN(Access Point Name),即「接入點名稱」,用來標識GPRS的業務種類,目前分為兩大類:CMWAP(通過GPRS訪問WAP業務)、CMNET(除了WAP以外的服務目前都用CMNET,比如連接網際網路等)。 APN的英文全稱是Access Point Name,中文全稱叫接入點,是您在通過手機上網時必須配置的一個參數,它決定了您的手機通過哪種接入方式來訪問網路。 移動手機的默認上網配置有兩種:CMWAP和CMNET。一些使用移動辦公的大客戶,通常會使用專用APN,其接入點隨意定義,只要和該省運營商其他APN不沖突即可。 CMWAP也叫移動夢網,通過該接入點可接入一個比較大的移動私網,網內有大量的手機應用下載及資源訪問。因為CMWAP不接入互聯網,只接入移動運營商的私網,所以流量費用比較低廉。 CMNET也叫GPRS連接互聯網,通常每個省的運營商會提供若干個Internet出口以供CMNET撥號用戶使用。其流量費用較CMWAP要高一些。 目前國內銷售的手機,如果是非智能機,通常已配置好CMWAP連接,智能機通常會配置CMWAP和CMNET連接。如需手動添加這些配置,請參考手機說明書。 專有APN在功能上可以和Internet的VPN做類比,實際上他就是基於GPRS的VPN網路。 專有APN常見組網方式 1,運營商部署一條專線接入到企業的網路中,局端和企業端路由器之間採用私有IP進行連接。 2,局端互連路由器與GGSN採用GRE隧道連接。 專有APN的幾個重要特點: 1,除非運營商分配一個Internet IP地址,否則計算機沒有任何辦法通過Internet訪問該APN中的主機。 2,只有手機卡號在APN中的白名單之列,該手機才可以接入該APN。 3,企業客戶可以建立一套RADIUS和DHCP伺服器,GGSN向RADIUS伺服器提供用戶主叫號碼,採用主叫號碼和用戶賬號相結合的認證方式;用戶通過認證後由DHCP伺服器分配企業內部的靜態IP地址。補充:該認證方式不一定適合於每個省的運營商,這取決於該省運營商的APN管理平台。 GPRS專網系統終端上網登錄伺服器平台的流程為: 1)用戶發出GPRS登錄請求,請求中包括由運營商為GPRS專網系統專門分配的專網APN; 2)根據請求中的APN,SGSN向DNS伺服器發出查詢請求,找到與企業伺服器平台連接的GGSN,並將用戶請求通過GTP隧道封裝送給GGSN; 3)GGSN將用戶認證信息(包括手機號碼、用戶賬號、密碼等)通過專線送至Radius進行認證; 4)Radius認證伺服器看到手機號等認證信息,確認是合法用戶發來的請求,向DHCP伺服器請求分配用戶地址; 5)Radius認證通過後,由Radius向GGSN發送攜帶用戶地址的確認信息; 6)用戶得到了IP地址,就可以攜帶數據包,對GPRS專網系統信息查詢和業務處理平台進行訪問。

H. Android網路操作的幾種方法

第一種方式:使用HttpURLConnection進行聯網操作

這個方法需要我們手動構建一個http請求包,發送到指定的伺服器

get方式

2.post方式

I. Android如何獲取網路連接狀態及怎樣調用網路配置界面

1. Android獲取網路連接狀態的代碼如下:
public boolean isNetworkConnected(Context context) {
if (context != null) {
ConnectivityManager mConnectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
if (mNetworkInfo != null) {
return mNetworkInfo.isAvailable();
}
}
return false;
}

2.轉跳到網路設置界面:
Intent wifiSettingsIntent = new Intent("android.settings.WIFI_SETTINGS");
startActivity(wifiSettingsIntent);

閱讀全文

與android如何請求網路相關的資料

熱點內容
如何下載網路歌手無損音樂 瀏覽:526
wifi滿信號但是網路卡是怎麼回事 瀏覽:560
計算機網路實訓實習報告 瀏覽:850
計算機網路高級軟體 瀏覽:264
本機用電信卡怎麼移動網路 瀏覽:545
3g手機用2g網路 瀏覽:976
蘋果網路有鎖怎麼辦 瀏覽:710
計算機網路技術基礎雙色版 瀏覽:763
如何看電腦用的什麼網路 瀏覽:367
網路和新媒體哪個好 瀏覽:545
網路與運營商以及手機卡 瀏覽:541
四川統招專升本考計算機網路試題 瀏覽:602
網路中k和b哪個好 瀏覽:257
魅族連接網路一直密碼錯誤 瀏覽:357
網路時代如何解決親子問題 瀏覽:529
蘋果升級信號變弱了還原網路設置 瀏覽:803
手機直播機房網路搭建 瀏覽:99
分出來的路由器wifi沒網路 瀏覽:851
兩張卡用一個網路怎麼設置不卡 瀏覽:379
公司怎麼推廣網路 瀏覽:159

友情鏈接