HTTPclient+json
来源:互联网 发布:python编写exe程序 编辑:程序博客网 时间:2024/06/16 02:44
package
com.example.testjsonandget;
import
java.io.BufferedReader;
import
java.io.InputStreamReader;
import
java.util.ArrayList;
import
java.util.HashMap;
import
java.util.List;
import
java.util.Map;
import
org.apache.http.HttpEntity;
import
org.apache.http.HttpResponse;
import
org.apache.http.HttpStatus;
import
org.apache.http.NameValuePair;
import
org.apache.http.client.HttpClient;
import
org.apache.http.client.entity.UrlEncodedFormEntity;
import
org.apache.http.client.methods.HttpGet;
import
org.apache.http.client.methods.HttpPost;
import
org.apache.http.client.params.HttpClientParams;
import
org.apache.http.impl.client.DefaultHttpClient;
import
org.apache.http.message.BasicNameValuePair;
import
org.apache.http.params.BasicHttpParams;
import
org.apache.http.params.HttpConnectionParams;
import
org.apache.http.params.HttpParams;
import
org.json.JSONArray;
import
org.json.JSONObject;
import
android.app.Activity;
import
android.os.Bundle;
public
class
MainActivity
extends
Activity {
private
final
String uriString=
"your url"
;
@Override
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//服务器返回的JSON数据
JSONObject jsonObject=
this
.getJSONObjectByGet();
try
{
//从JSON中得到字符串
String apiString=jsonObject.getString(
"api"
);
String countString=jsonObject.getString(
"count"
);
System.out.println(
"apiString="
+apiString+
",countString="
+countString);
//从JSON中得到JSONArray,并且遍历
JSONArray jsonArray=jsonObject.getJSONArray(
"data"
);
for
(
int
i =
0
; i < jsonArray.length(); i++) {
JSONObject everyJsonObject=jsonArray.getJSONObject(i);
String category_id=everyJsonObject.getString(
"category_id"
);
String category_name=everyJsonObject.getString(
"category_name"
);
String category_rgb=everyJsonObject.getString(
"category_rgb"
);
String category_news_count=everyJsonObject.getString(
"category_news_count"
);
System.out.println(
"category_id="
+category_id+
",category_name="
+category_name+
",category_rgb="
+category_rgb+
",category_news_count="
+category_news_count);
System.out.println(
"====================================================="
);
}
}
catch
(Exception e) {
e.printStackTrace();
}
}
//得到HttpClient
public
HttpClient getHttpClient(){
HttpParams mHttpParams=
new
BasicHttpParams();
//设置网络链接超时
//即:Set the timeout in milliseconds until a connection is established.
HttpConnectionParams.setConnectionTimeout(mHttpParams,
20
*
1000
);
//设置socket响应超时
//即:in milliseconds which is the timeout for waiting for data.
HttpConnectionParams.setSoTimeout(mHttpParams,
20
*
1000
);
//设置socket缓存大小
HttpConnectionParams.setSocketBufferSize(mHttpParams,
8
*
1024
);
//设置是否可以重定向
HttpClientParams.setRedirecting(mHttpParams,
true
);
HttpClient httpClient=
new
DefaultHttpClient(mHttpParams);
return
httpClient;
}
//得到JSONObject(Get方式)
public
JSONObject getJSONObjectByGet(){
JSONObject resultJsonObject=
null
;
if
(
""
.equals(uriString)||uriString==
null
) {
return
null
;
}
HttpClient httpClient=
this
.getHttpClient();
StringBuilder urlStringBuilder=
new
StringBuilder(uriString);
StringBuilder entityStringBuilder=
new
StringBuilder();
//利用URL生成一个HttpGet请求
HttpGet httpGet=
new
HttpGet(urlStringBuilder.toString());
BufferedReader bufferedReader=
null
;
HttpResponse httpResponse=
null
;
try
{
//HttpClient发出一个HttpGet请求
httpResponse=httpClient.execute(httpGet);
}
catch
(Exception e) {
e.printStackTrace();
}
//得到httpResponse的状态响应码
int
statusCode=httpResponse.getStatusLine().getStatusCode();
if
(statusCode==HttpStatus.SC_OK) {
//得到httpResponse的实体数据
HttpEntity httpEntity=httpResponse.getEntity();
if
(httpEntity!=
null
) {
try
{
bufferedReader=
new
BufferedReader
(
new
InputStreamReader(httpEntity.getContent(),
"UTF-8"
),
8
*
1024
);
String line=
null
;
while
((line=bufferedReader.readLine())!=
null
) {
entityStringBuilder.append(line+
"/n"
);
}
//利用从HttpEntity中得到的String生成JsonObject
resultJsonObject=
new
JSONObject(entityStringBuilder.toString());
}
catch
(Exception e) {
e.printStackTrace();
}
}
}
return
resultJsonObject;
}
//----------------------------------------以下为POST请求
//准备进行POST请求的参数,一般而言将这些参数封装在HashMap中
public
JSONObject save(String title, String timelength)
throws
Exception{
Map<String,String> paramsHashMap =
new
HashMap<String, String>();
paramsHashMap.put(
"title"
, title);
paramsHashMap.put(
"timelength"
, timelength);
paramsHashMap.put(
"method"
,
"save"
);
String path =
"your url"
;
return
getJSONObjectByPost(path, paramsHashMap,
"UTF-8"
);
}
//得到JSONObject(Post方式)
//此方法此处未调用测试
public
JSONObject getJSONObjectByPost(String path,Map<String, String> paramsHashMap, String encoding) {
JSONObject resultJsonObject =
null
;
List<NameValuePair> nameValuePairArrayList =
new
ArrayList<NameValuePair>();
// 将传过来的参数填充到List<NameValuePair>中
if
(paramsHashMap !=
null
&& !paramsHashMap.isEmpty()) {
for
(Map.Entry<String, String> entry : paramsHashMap.entrySet()) {
nameValuePairArrayList.add(
new
BasicNameValuePair(entry.getKey(), entry.getValue()));
}
}
UrlEncodedFormEntity entity =
null
;
try
{
// 利用List<NameValuePair>生成Post请求的实体数据
// 此处使用了UrlEncodedFormEntity!!!
entity =
new
UrlEncodedFormEntity(nameValuePairArrayList, encoding);
HttpPost httpPost =
new
HttpPost(path);
// 为HttpPost设置实体数据
httpPost.setEntity(entity);
HttpClient httpClient =
this
.getHttpClient();
// HttpClient发出Post请求
HttpResponse httpResponse = httpClient.execute(httpPost);
if
(httpResponse.getStatusLine().getStatusCode() ==
200
) {
// 得到httpResponse的实体数据
HttpEntity httpEntity = httpResponse.getEntity();
if
(httpEntity !=
null
) {
try
{
BufferedReader bufferedReader =
new
BufferedReader(
new
InputStreamReader(httpEntity.getContent(),
"UTF-8"
),
8
*
1024
);
StringBuilder entityStringBuilder =
new
StringBuilder();
String line =
null
;
while
((line = bufferedReader.readLine()) !=
null
) {
entityStringBuilder.append(line +
"/n"
);
}
// 利用从HttpEntity中得到的String生成JsonObject
resultJsonObject =
new
JSONObject(entityStringBuilder.toString());
}
catch
(Exception e) {
e.printStackTrace();
}
}
}
}
catch
(Exception e) {
e.printStackTrace();
}
return
resultJsonObject;
}
}
0 0
- json httpclient
- HTTPclient+json
- HttpClient json请求
- httpclient提交json参数
- HTTPCLIENT POST JSON
- HttpClient发送JSON数据
- httpclient提交json参数
- HttpClient读取JSON数据
- HttpClient读取json窜
- HttpClient请求json数据
- httpClient(Get)解析JSON
- HttpClient 发送Json
- HttpClient与参数json
- Android HttpClient 与JSON解析
- android HttpClient获取json数据
- httpClient post发送json数据
- HttpClient 发送Json请求,结果返回Json
- httpclient发送Json请求,结果返回Json.
- RecyclerView 点击自动跳到下一项
- Eclipse+Maven创建webapp项目
- 宏的本质以及宏(包括函数式宏) 没有返回值概念
- opencv中的TBB
- Thread
- HTTPclient+json
- 23种设计模式目录总览
- 10 条提升 Android 性能的建议
- 保证数据的完整性
- [leetcode] 206. Reverse Linked List 解题报告
- How to Use BSP Trees to Generate Game Maps
- Scalaz(24)- 泛函数据结构: Tree-数据游览及维护
- 解决xcode升级xalign无法使用的方法
- 发短信