导航:首页 > 网络安全 > 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如何请求网络相关的资料

热点内容
哪个星座最强势网络调查 浏览:225
移动网络动画 浏览:213
网络创业大神有什么好点子吗 浏览:277
5g满信号但是网络很卡 浏览:607
家庭网络无线密码怎么知道 浏览:300
如何解决网络直播不良问题 浏览:11
怎样选择路由器网络连接方式 浏览:961
网络设置5位数怎么改 浏览:690
东莞都在哪个网络招聘 浏览:724
电脑出现两个无线网络适配器 浏览:768
维他网络用语什么意思 浏览:793
计算机网络配置终端和路由器 浏览:124
网络学习编程哪个平台好 浏览:129
电信网络挂死怎么解决 浏览:754
邮箱里的网络磁盘是否是共享 浏览:15
wifi网络突然无法加入 浏览:840
手机卡连接不了网络怎么办 浏览:670
服装网络推广怎么弄 浏览:198
网络慈善如何解决 浏览:665
成都电信网络多少钱一年 浏览:84

友情链接