導航:首頁 > 操作系統 > androidapp請求數據

androidapp請求數據

發布時間:2022-11-05 07:49:40

A. android版本的app在wifi下請求伺服器會超時,但3G、4G下不會

1、首先我們就須要看看在蘋果手機里的設置蜂窩移動網路有沒有打開來,無法連接到itunesstore時,可能是手機中移動數據沒有打開起來而導致無法正常連接到網路。

2、打開蘋果手機裡面的設置,進入到蜂窩移動網路

3、把蜂窩移動數據打開起來,然後看看登陸你的Apple ID看看

方法、步驟二:

1、也有可能是手機裡面網路設置問題導致的,打開蘋果手機設置進入通用裡面。

2、按一下還原、還原網路設置

方法、步驟三:

Apple ID的問題,建議更換一下你登陸的Apple ID,通常在注冊Apple
ID時,一些信息沒有填寫完整也會導致蘋果手機無法連接到itunesstore,重新注冊一個Apple ID或者使用別人的Apple ID登陸看看。

B. 怎麼攔截Android APP HTTP請求

根據PC 平台不同 推薦兩款 軟體 抓網路請求:
Windows: Fiddler 官網地址 http://www.telerik.com/fiddler
Mac : Charles 官網地址: https://www.charlesproxy.com/
兩款軟體 均需要 手機 與PC 在同一區域網內,並且需要手動設置 手機Wi-Fi 代理伺服器IP 為PC Ip 地址,埠號需要看一下軟體設定。常用的Http 請求 均可抓取,若是Https 請求 Charles 需要安裝 手機證書,才可將抓取數據顯示出來。

C. android 網路請求數據一般寫在哪

一、需要用到的場景 在jQuery中使用$.post()就可以方便的發起一個post請求,在android程序中有時也要從伺服器獲取一些數據,就也必須得使用post請求了。 二、需要用到的主要類 在android中使用post請求主要要用到的類是HttpPost、HttpResponse、EntityUtils 三、主要思路 1、創建HttpPost實例,設置需要請求伺服器的url。 2、為創建的HttpPost實例設置參數,參數設置時使用鍵值對的方式用到NameValuePair類。 3、發起post請求獲取返回實例HttpResponse 4、使用EntityUtils對返回值的實體進行處理(可以取得返回的字元串,也可以取得返回的byte數組) 代碼也比較簡單,注釋也加上了,就直接貼出來了 [java] package com.justsy.url; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.protocol.HTTP; import org.apache.http.util.EntityUtils; import android.app.Activity; import android.os.Bundle; public class HttpURLActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); System.out.println("start url..."); String url = "192.168.2.112:8080/JustsyApp/Applet"; // 第一步,創建HttpPost對象 HttpPost httpPost = new HttpPost(url); // 設置HTTP POST請求參數必須用NameValuePair對象 List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("action", "downloadAndroidApp")); params.add(new BasicNameValuePair("packageId", "89dcb664-50a7-4bf2-aeed-49c08af6a58a")); params.add(new BasicNameValuePair("uuid", "test_ok1")); HttpResponse httpResponse = null; try { // 設置httpPost請求參數 httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); httpResponse = new DefaultHttpClient().execute(httpPost); //System.out.println(httpResponse.getStatusLine().getStatusCode()); if (httpResponse.getStatusLine().getStatusCode() == 200) { // 第三步,使用getEntity方法活得返回結果 String result = EntityUtils.toString(httpResponse.getEntity()); System.out.println("result:" + result); T.displayToast(HttpURLActivity.this, "result:" + result); } } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } System.out.println("end url..."); setContentView(R.layout.main); } } ADD:使用HttpURLConnection 進行post請求 [java] String path = "192.168.2.115:8080/android-web-server/httpConnectServlet.do?PackageID=89dcb664-50a7-4bf2-aeed-49c08af6a58a"; URL url = new URL(path); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setConnectTimeout(5000); System.out.println(conn.getResponseCode()); ============================================================================================================================ 通過get和post方式向伺服器發送請求 首先說一下get和post的區別 get請求方式是將提交的參數拼接在url地址後面,例如/index.jsp?num=23&jjj=888; 但是這種形式對於那種比較隱私的參數是不適合的,而且參數的大小也是有限制的,一般是1K左右吧,對於上傳文件 就不是很適合。 post請求方式是將參數放在消息體內將其發送到伺服器,所以對大小沒有限制,對於隱私的內容也比較合適。 如下Post請求 POST /LoginCheck HTTP/1.1 Accept: text/html, application/xhtml+xml, */* Referer: 192.168.2.1/login.asp Accept-Language: zh-CN User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; BOIE9;ZHCN) Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip, deflate Host: 192.168.2.1 Content-Length: 39 Connection: Keep-Alive Cache-Control: no-cache Cookie: language=en Username=admin&checkEn=0&Password=admin //參數位置 在android中用get方式向伺服器提交請求: 在android模擬器中訪問本機中的tomcat伺服器時,注意:不能寫localhost,因為模擬器是一個單獨的手機系統,所以要寫真是的IP地址。 否則無法訪問到伺服器。 //要訪問的伺服器地址,下面的代碼是要向伺服器提交用戶名和密碼,提交時中文先要經過URLEncoder編碼,因為模擬器默認的編碼格式是utf-8 //而tomcat內部默認的編碼格式是ISO8859-1,所以先將參數進行編碼,再向伺服器提交。 private String address = "192.168.2.101:80/server/loginServlet"; public boolean get(String username, String password) throws Exception { username = URLEncoder.encode(username);// 中文數據需要經過URL編碼 password = URLEncoder.encode(password); String params = "username=" + username + "&password=" + password; //將參數拼接在URl地址後面 URL url = new URL(address + "?" + params); //通過url地址打開連接 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); //設置超時時間 conn.setConnectTimeout(3000); //設置請求方式 conn.setRequestMethod("GET"); //如果返回的狀態碼是200,則一切Ok,連接成功。 return conn.getResponseCode() == 200; } 在android中通過post方式提交數據。 public boolean post(String username, String password) throws Exception { username = URLEncoder.encode(username);// 中文數據需要經過URL編碼 password = URLEncoder.encode(password); String params = "username=" + username + "&password=" + password; byte[] data = params.getBytes(); URL url = new URL(address); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(3000); //這是請求方式為POST conn.setRequestMethod("POST"); //設置post請求必要的請求頭 conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");// 請求頭, 必須設置 conn.setRequestProperty("Content-Length", data.length + "");// 注意是位元組長度, 不是字元長度 conn.setDoOutput(true);// 准備寫出 conn.getOutputStream().write(data);// 寫出數據 return conn.getResponseCode() == 200;

D. android app如何從資料庫中獲取需要的數據

Android 不自動提供資料庫。在 Android 應用程序中使用 SQLite,必須自己創建資料庫,然後創建表、索引,填充數據。Android 提供了 SQLiteOpenHelper 幫助你創建一個資料庫,你只要繼承 SQLiteOpenHelper 類,就可以輕松的創建資料庫。SQLiteOpenHelper 類根據開發應用程序的需要,封裝了創建和更新資料庫使用的邏輯。SQLiteOpenHelper 的子類,至少需要實現三個方法:
構造函數,調用父類 SQLiteOpenHelper 的構造函數
onCreate()方法;// TODO 創建資料庫後,對資料庫的操作
onUpgrage()方法。// TODO 更改資料庫版本的操作
當你完成了對資料庫的操作(例如你的 Activity 已經關閉),需要調用 SQLiteDatabase 的 Close() 方法來釋放掉資料庫連接。
操作資料庫的最佳實踐是創建一個輔助類,例如聯系人模塊
class ContactsDatabaseHelper extends SQLiteOpenHelper
3.2 Cursor類
Android使用Cursor類返回一個需要的值,Cursor作為一個指針從資料庫查詢返回結果集,使用Cursor允許Android更有效地管理它們需要的行和列,你使用ContentValues對象存儲鍵/值對,它的put()方法允許你插入不同數據類型的鍵值。
3.3 數據類型
SQLite 和其他資料庫最大的不同就是對數據類型的支持,創建一個表時,可以在 CREATE TABLE 語句中指定某列的數據類型,但是你可以把任何數據類型放入任何列中。當某個值插入資料庫時,SQLite 將檢查它的類型。如果該類型與關聯的列不匹配,則 SQLite 會嘗試將該值轉換成該列的類型。如果不能轉換,則該值將作為其本身具有的類型存儲。比如可以把一個字元串(String)放入 INTEGER 列。SQLite 稱這為「弱類型」(manifest typing.)。

四、資料庫操作
4.1創建和打開資料庫
在Android中創建和打開一個資料庫都可以使用openOrCreateDatabase方法來實現,因為它會自動去檢測是否存在這個資料庫,如果存在則打開,如果不存在則創建一個資料庫:創建成功則返回一個SQLiteDatebase對象,否則拋出異常FileNotFoundException。
下面我們來創建一個名為Test的資料庫,並返回一個SQLiteDatabase對象mSQLiteDatabase。
mSQLiteDatabase=this.openOrCreateDatabase("Test",MODE_PRIVATE,null);

4.2創建表
通過execSQL方法來執行一條SQL語句。
String CREATE_TABLE="create table 表名(列名,列名,……)";
mSQLiteDatabase.execSQL(CREATE_TABLE);

創建表的時候總要確定一個主鍵,這個欄位是64位整型,別名_rowid。其特點就是自增長功能。當到達最大值時,會搜索該欄位未使用的值(某些記錄被刪除_rowid會被回收),所以要唯一嚴格增長的自動主鍵必須加入關鍵字autoincrement。
4.3刪除表
mSQLiteDatabase("drop table 表名");

E. Android圖形系統(八)-app與SurfaceFlinger共享UI元數據過程

Android應用程序與SurfaceFlinger服務是運行在不同的進程中的,因此,它們採用Binder進程間通信機制來進行通信。

但是我們知道一個Android應用程序可能會有很多個窗口,而每一個窗口都有自己的UI元數據,因此,Android應用程序需要傳遞給SurfaceFlinger服務的UI元數據是相當可觀的。在這種情況下,通過Binder來在Android應用程序與SurfaceFlinger服務之間傳遞UI元數據是不合適的,因此這里選擇了Android系統的匿名共享內存的方案。在每一個Android應用程序與SurfaceFlinger服務之間的連接上加上一塊用來傳遞UI元數據的匿名共享內存。而這塊區域被包裝為SharedClient。

在每一個SharedClient裡面,有至多31個SharedBufferStack,那什麼又是SharedBufferStack?

SharedBufferStack就是共享緩沖區堆棧,每一個SharedBufferStack與一個Surface一一對應,每一個Surface又對應一個窗口,那就是一個應用程序內部最多可創建31個窗口。SharedBufferStack 內部包含N個緩沖buffer, 開篇介紹的雙緩沖(front buffer , back buffer) ,三緩沖(front buffer , back buffer, tripple buffer),有了它SurfaceFlinger服務就可以使用N個緩沖區技術來繪制UI了。

下面我們再來了解下SharedBufferStack的結構:

SharedBufferStack中分為空閑buffer和已使用的buffer。其中SharedBufferStack中的每一個已經使用了的緩沖區都對應有一個GraphicBuffer,用來描述真正的UI數據。

客戶端一次申請GraphicBuffer且將UI元數據寫入GraphicBuffer的流程:

當Android應用程序需要更新一個Surface的時候,它就會找到與它所對應的SharedBufferStack,並且從它的空閑緩沖區列表的尾部取出一個空閑的Buffer。我們假設這個取出來的空閑Buffer的編號為index。接下來Android應用程序就請求SurfaceFlinger服務為這個編號為index的Buffer分配一個圖形緩沖區GraphicBuffer。SurfaceFlinger服務分配好圖形緩沖區GraphicBuffer之後,會將它的編號設置為index,然後再將這個圖形緩沖區GraphicBuffer返回給Android應用程序訪問。Android應用程序得到了SurfaceFlinger服務返回的圖形緩沖區GraphicBuffer之後,就在裡面寫入UI數據。寫完之後,就將與它所對應的緩沖區,即編號為index的Buffer,插入到對應的SharedBufferStack的已經使用了的緩沖區列表的頭部去。這一步完成了之後,Android應用程序就通知SurfaceFlinger服務去繪制那些保存在已經使用了的緩沖區所描述的圖形緩沖區GraphicBuffer了。

那麼我們也知道一個繪圖表面,在SurfaceFlinger服務和Android應用程序中分別對應Layer對象和Surface對象,其中這兩個對象在內部分別使用一個SharedBufferServer對象和一個SharedBufferClient對象來操作這個繪圖表面的UI元數據緩沖堆棧。操作過程如下:

在Android應用程序這一側,當它需要渲染一個Surface時,它就會首先找到對應的SharedBufferClient對象,然後再調用它的成員函數dequeue來請求分配一個UI元數據緩沖區。有了這個UI元數據緩沖區之後,Android應用程序再調用這個SharedBufferClient對象的成員函數setDirtyRegion、setCrop和setTransform來設置對應的Surface的裁剪區域、紋理坐標以及旋轉方向。此外,Android應用程序還會請求SurfaceFlinger服務為這個Surface分配一個圖形緩沖區,以便可以往這個圖形緩沖區寫入實際的UI數據。最後,Android應用程序就可以調用這個SharedBufferClient對象的成員函數queue把前面已經准備好了的UI元數據緩沖區加入到它所描述的一個UI元數據緩沖區堆棧的待渲染隊列中,以便SurfaceFlinger服務可以在合適的時候對它進行渲染。當SurfaceFlinger服務需要渲染一個Surface的時候,它就會找到對應的一個SharedBufferServer對象,然後調用它的成員函數getQueueCount來檢查它所描述的一個UI元數據緩沖區堆棧的待渲染隊列的大小。如果這個大小大於0,那麼SurfaceFlinger服務就會繼續調用它的成員函數retireAndLock來取出隊列中的第一個UI元數據緩沖區,以及調用它的成員函數getDirtyRegion、getCrop和getTransform來獲得要渲染的Surface的裁剪區域、紋理坐標和旋轉方向。最後,SurfaceFlinger服務就可以結合這些信息來將保存這個Surface的圖形緩沖區中的UI數據渲染在顯示屏中。

另外想深入了解BufferQueue的生產者消費者模型,詳細可以閱讀下如下這篇博文,感覺還不錯: https://blog.csdn.net/stn_lcd/article/details/73801313

參考:
https://blog.csdn.net/Luoshengyang/article/details/7867340

F. android的app從網站拉取數據一般怎麼拉

這種技術我也想知道,還請哪位大牛給點建議。

我目前知道的方法就是自己弄個伺服器去抓取數據,然後提供介面給APP訪問。

G. Android 我的一個APP有時會出現HTTP請求失敗的情況,其他應用正常聯網,重啟後恢復正常

經過查資料發現,Google為了用戶數據的安全性,強制要求高版本的Android 應用,必須使用 https 請求,而http請求將失效,同理用WebView載入URL時也必須為https。
針對以上問題,經查詢和實驗,發現有以下幾種解決辦法:
1、將http請求全部改為https。
2、將targetSdkVersion降到27以下。
3、在AndroidManifest.xml配置文件的
標簽中增加以下設置:
android:usesCleartextTraffic="true"
第三中方法經設置有效,但是在華為P20手機上出現了問題:小編的應用又一個新聞界面,在載入界面的時候會進行網路請求,發現大多數情況都是第一次請求會失敗,顯示錯誤界面,當我們點擊錯誤界面重新載入時就會成功,剛開始以為是手機電量低的問題,後來發現失敗的日誌:
2019-08-30 16:51:53.042 11455-11455/com.***.*** E/HybirdActivity.java: onFailure(HybirdActivity.java:236)onFailure==com.live.common.network.exception.BaseException: unexpected end of stream on Connection{***.***.com:80, proxy=DIRECT hostAddress=***.***.com/123.***.***.7:80 cipherSuite=none protocol=http/1.1}
最後的解決辦法是將http改為了https.

H. android中如何監聽到其他應用的網路請求數據

目前android提供的工具沒事,我們寫工程都是自己寫http請求,每次請求的時候打Log,記錄請求的url和參數。請求回來了,打log,記錄回來的數據,記錄數據的狀態,數據的內容。 目前只能這樣。如果用模擬器的話,可以用vnStat或者CommView之類的監控電腦網卡的請求,間接的監控手機。一般開發用手機測試,這樣就不行了。只能打log了

I. android應用是如何訪問資料庫的

android本地資料庫sqlite基本是用來存本地數據或者載入伺服器上的數據的。你是想問android客戶端如何和伺服器的資料庫交互吧?這個很簡單,他們不直接交互,android會發消息給伺服器,請求某一些操作,然後伺服器收到客戶端的消息後,對應的再操作伺服器上的資料庫,然後返回消息給客戶端。

J. 如何提高 Android app 中 http 請求的響應時間

1>建議用JSON字元串,因為JSON字元串傳入的速度比較快的
2>建議後台返回的數據量減少
3>建議用谷歌推出的volley框架,有效的解決交互效率
4>添加緩存,在本地建立SQLite資料庫,已有的數據不需要到後台重新獲取

閱讀全文

與androidapp請求數據相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:758
蘋果郵件無法連接伺服器地址 瀏覽:963
phpffmpeg轉碼 瀏覽:672
長沙好玩的解壓項目 瀏覽:145
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:486
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:383
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:350
風翼app為什麼進不去了 瀏覽:779
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:151
伊克塞爾文檔怎麼進行加密 瀏覽:893
app轉賬是什麼 瀏覽:163