android请求数据
㈠ java怎么接收android请求过来的json数据
java接收android请求json数据的方法:
如果发送的没有参数名称你可以直接得到请求体,如
InputStreaminputStream=urlConnection.getInputStream();
Stringencoding=urlConnection.getContentEncoding();
Stringbody=IOUtils.toString(inputStream,encoding);
System.out.println(body);如果body就是那个json内容使用fastjson进行解析就可以了
JSONObjectmap=JSON.parseObject(body);
System.out.println(map.getString("mobileNo"));//还是System.out.println(map.get("mobileNo"));?具体看一下接口文档或者
Mapmap=JSON.parseObject(body,Map.class);
System.out.println(map.get("mobileNo"));
㈡ android 怎样获取后台的数据
可使用android自带的httpclient框架,向后台发起请求,获取数据。
1. GET 方式传递参数
//先将参数放入List,再对参数进行URL编码
List<BasicNameValuePair> params = new LinkedList<BasicNameValuePair>();
params.add(new BasicNameValuePair("param1", "数据")); //增加参数1
params.add(new BasicNameValuePair("param2", "value2"));//增加参数2
String param = URLEncodedUtils.format(params, "UTF-8");//对参数编码
String baseUrl = "服务器接口完整URL";
HttpGet getMethod = new HttpGet(baseUrl + "?" + param);//将URL与参数拼接
HttpClient httpClient = new DefaultHttpClient();
try {
HttpResponse response = httpClient.execute(getMethod); //发起GET请求
Log.i(TAG, "resCode = " + response.getStatusLine().getStatusCode()); //获取响应码
Log.i(TAG, "result = " + EntityUtils.toString(response.getEntity(), "utf-8"));//获取服务器响应内容
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
2. POST方式 方式传递参数
//和GET方式一样,先将参数放入List
params = new LinkedList<BasicNameValuePair>();
params.add(new BasicNameValuePair("param1", "Post方法"));//增加参数1
params.add(new BasicNameValuePair("param2", "第二个参数"));//增加参数2
try {
HttpPost postMethod = new HttpPost(baseUrl);//创建一个post请求
postMethod.setEntity(new UrlEncodedFormEntity(params, "utf-8")); //将参数填入POST Entity中
HttpResponse response = httpClient.execute(postMethod); //执行POST方法
Log.i(TAG, "resCode = " + response.getStatusLine().getStatusCode()); //获取响应码
Log.i(TAG, "result = " + EntityUtils.toString(response.getEntity(), "utf-8")); //获取响应内容
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
㈢ android 开发 用模拟器可以请求到数据但是用手机就请求不到数据 试了多个手机 都不能 谢谢
如果手机无法进行数据流量上网,建议进行以下步骤操作:
1、检查SIM卡是否开通GPRS上网业务或被临时关闭。
使用手机数据上网功能,电话卡需开通数据流量上网业务。可以联系电话卡当地的网络供应商,开通数据流量上网业务。
2、检查“移动数据”开关是否开启。
用手指向下滑动屏幕顶帘,把“移动数据”点为绿色。
若以上操作后仍无法上网,建议重置手机上网参数:设置-移动网络-接入点名称-更多-重置为默认设置。
3、请更换其他电话卡尝试
4、也可以换个时间段或网络环境再尝试。
5、备份手机数据(电话簿、短信、图片等),将手机恢复出厂设置
若故障依旧,建议将手机送至就近的服务中心进行检测维修
㈣ 安卓中如何使用intentservice请求数据并保存在数据库中
service类必须实现一个接收方法,接收中传递的是intent
@Override
public
IBinder
onBind(Intent
intent)
{
Bundle
bundle
=
intent.getExtras();
String
stringVal
=
bundle.getString("stringValue");
//用于接收字符串
int
numVal
=
bundle.getInt("intValue");
//用于接收int类型数据
byte[]
bytes
=
bundle.getByteArray("bytesValue");
//用于接收字节流,你可以把文件放入字节流
return
null;
}
你可以用Bundle来接受你从Activity发过来的数据,然后使用Bundle提供各个方法来接受数据。
如果仅仅是字符串之类的,
使用getStringExtra方法直接接收即可。
@Override
public
IBinder
onBind(Intent
intent)
{
String
str1
=
intent.getStringExtra("str1");
String
str2
=
intent.getStringExtra("str2");
return
null;
}
㈤ 安卓网络请求数据时如何保证数据的完整性和安全性使用哪种加密
通过网络传输数据,需要保证数据的完整性、保密性,以及能够对数据的发送者进行身份验证。这些都需要通过一些加密算法实现。
对称加密:
加密和解密使用同一个密钥,特点:保证了数据的保密性。局限性:无法解决密钥交换问题。常用的算法有:DES,3DES,AES;
公钥加密:
生成一个密钥对(私钥和公钥),加密时用私钥加密,解密时用公钥解密,特点:解决了密钥交换问题。局限性:对大的数据加密速度慢。
单向加密:
提取数据的特征码,特点:定长输出,不可逆,可检验数据的完整性。局限性:无法保证数据的保密性。常用算法:MD5、SHA1、CRC-32。
三种加密方法各有优缺点,在时实际应用中,数据从发送方到达接收方,通常是这样应用的:
1) 首先对要发送的数据做单向加密,获取数据的特征码;
2) 对特征码用发送方的私钥进行加密生成S1;
3) 然后对S1和数据进行对称加密生成S2;
4) 最后将S2和对称加密的密码使用接收方的公钥进行加密。
这样一来数据在传输过程中的完整性、保密性以及对发送方身份的验证都能得到保障。
当数据到达接收方时,接收方先用自己的私钥对接收到的数据进行解密,得到密码和加密的数据;使用密码对加密数据解密,得到加密的特征码和数据;用发送方的公钥解密特征码,如果能解密,则说明该数据是由发送方所发;反之则不是,这便实现了身份验证;最后计算数据的特征码和解密出来的特征码做对比,如果一样,则该数据没有被修改;反之则数据被修改过了。
㈥ android socket请求数据怎么抓包
从网络上面搜索到的资料看,要抓取手机中app的网络包有下面几种方式:(1).将tcpmp移植到Android平台,然后在命令行下启动tcpmp进行抓包。Tcpmp程序实际上可以看作是wireshark的命令行版本,将该程序移植到Android平台直接抓包,这是一种最直接的抓包方式,然后将抓获的数据包文件,从手机传到windows系统上用wireshark打开进行分析,这种方式貌似不能用于苹果手机。(2).使用fiddler,在windows系统上打开fiddler软件,该软件会将我们的电脑变成一个代理,然后在手机上设置wifi网络,将代理指定为开启fiddler的那台电脑,并且端口设置为fiddler侦听的8888端口,这时候使用手机访问的数据,就会通过该代理,在fiddler中就可以看到http的数据包。这种方法我试了半天怎么都看不到数据包,不知道哪里出问题了,根据原理,这种方式支持可以通过代理访问网络的手机。所以从原理上说是支持Android和苹果手机的。(3).通过各种方式在pc电脑上建立wifi热点,然后使用wireshark在pc电脑上监视该wifi热点,通过手机连接该热点访问网络。这样wireshark会获取所有流经该热点的数据包这种方式适用于所有能够无线访问的手机,也就是说所有的Android和苹果手机。那么如何在pc电脑上建立wifi热点呢,有这么几种办法:(1).Win7电脑经过设置,可以将无线网卡设置为wifi热点,这种方法我以前用过,可以成功,但是步骤繁琐,而且不一定能够成功,其他的windows系统估计就没戏了。(2).使用软件自动建立wifi热点,不需要自己手工配置,这样的软件有Connectify Hotspot,猎豹免费wifi,360免费wifi软件,这几个软件我都使用过,比较好用,这种方式同样也只能针对有无线网卡的笔记本电脑,原理也是将笔记本电脑上的无线网卡建立热点了,只不过是软件自动的,不需要人工设置,比方法1要方便。注意:经过实验发现,手机连接这种方式建立的热点,所发送的数据,用wireshark去抓包,需要捕获电脑上本身联网的那个“网络连接”,例如我的笔记本上面有一个“本地连接”,该连接是使用有线网络的。我用猎豹免费wifi软件建立一个热点之后,我的电脑上多出一个“无线网络连接3”,可以看到该“无线网络连接3”是猎豹生成的,但是我抓包的时候,wireshark需要捕获“本地连接”上的包,也就是我的手机访问的数据实际上还是使用的“本地连接”,通信IP也是“本地连接”上的IP地址,而在手机的wifi连接设置中看到的ip地址,在我抓的包中也搜不到,也就是说手机通过该热点访问网络,实际上还是使用的“本地连接”的IP地址,至于是什么原理,我目前也不太清楚。但是下面要说的随身wifi硬件则与此不同,随身wifi是建立了网卡。(3).使用随身wifi硬件。这种也是很方便的方法,而且比较稳定,对笔记本电脑和台式机都可以使用。我之前买了一个360的随身wifi(不是打广告,本人对360公司不感冒,但是他的随身wifi做的确实还可以,同事中有买小米wifi的,不太稳定)。只要在360的官网上下载驱动,直接插上随身wifi就可以使用,我推荐使用这种方法。如果你用的是笔记本电脑可以使用方法2,如果是台式机器可以使用方法3。android socket请求数据怎么抓包
㈦ 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;
}
㈧ Android网络接口请求数据,oppo R15手机4G流量,请求不到数据。
网络接口请求数据,测试中用OPPO R15手机4G流量,请求数据时,请求提示连接超时,但用Wifi请求数据可以正常请求到数据,建议进入OPPO R15手机【设置】——【双卡与移动网络】——【使用WLAN与移动网络的应用】,点击软件允许使用移动网络数据。
经过以上尝试问题依然存在,可备份手机中的重要数据文件后,进入【设置】——【其他设置】——点击【还原手机】,或携带手机前往OPPO 客户服务中心免费检测刷机。通过以下方式可以快速查询到OPPO客户服务中心的地址和电话:
1.进入OPPO官网--服务--服务网点查询;2.进入【OPPO+】——【首页】——【推荐】——【服务网点】。
㈨ android网络请求数据是同步还是异步
异步请求,因为UI线程(主线程)不允许有5秒以上的耗时操作.在主线程网络请求会导致阻塞,看起来程序就像假死了一样.所以都是异步请求.
㈩ 怎样使 Android 的 ScrollView 动态请求数据
可以用PullRefreshListView开源的,如果是其他情况 可以重写scrollView有一个protected void onScrollChanged(int x, int y, int oldx, int oldy) 方法 你写一个接口 回调就ok了,在做ListView加载数据时如果数据量大的话会造成加载时间过长而卡屏,
只要重写这两个方法就可以实现滚动加载,如以下代码
php">publicvoidonScroll(AbsListViewv,intfirstVisibleItem,
intvisibleItemCount,inttotalItemCount){
lastItem=firstVisibleItem+visibleItemCount-1;
if(adapter.count==lastItem){
adapter.count+=10;
adapter.notifyDataSetChanged();
}
}
(AbsListViewview,intscrollState){
//TODOAuto-generatedmethodstub
Log.i("onScrollStateChanged","onScrollStateChanged");
}