Android 모방 클 라 이언 트 (v 5.7.1) - HTTPS 프로 토 콜 의 POST 방식 으로 사용자 의 기본 정 보 를 얻 습 니 다.
1. 확장 전 네트워크 모듈
Android 모방 클 라 이언 트 (v 5.7.1) - 네트워크 모듈 처리 구 조 를 기반 으로 확장 되 며 HTTPS 프로 토 콜 을 통 해 POST 방식 으로 네트워크 에 접근 하 는 처 리 를 추가 합 니 다.사용자 정의 클래스 (AsyncHttpsPost) 는 AsyncBaseRequest 클래스 를 계승 합 니 다. 코드 는 다음 과 같 습 니 다.
package com.everyone.android.net;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
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 com.everyone.android.callback.ParseCallback;
import com.everyone.android.callback.ResultCallback;
/**
* : HTTPS POST
* @author android_ls
*
*/
public class AsyncHttpsPost extends AsyncBaseRequest {
/**
*
*/
private static final long serialVersionUID = 4L;
public AsyncHttpsPost(String url, Map<String, String> parameter,
ParseCallback handler, ResultCallback requestCallback) {
super(url, parameter, handler, requestCallback);
}
@Override
protected InputStream getRequestResult() throws IOException {
List<NameValuePair> paramPairs = new ArrayList<NameValuePair>();
if(parameter != null && !parameter.isEmpty()){
for(Map.Entry<String, String> entry : parameter.entrySet()){
paramPairs.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
}
}
UrlEncodedFormEntity entitydata = new UrlEncodedFormEntity(paramPairs, HTTP.UTF_8);
HttpPost post = new HttpPost(requestUrl);
post.setEntity(entitydata);
DefaultHttpClient client = new DefaultHttpClient();
// POST
HttpResponse response = client.execute(post);
if(response.getStatusLine().getStatusCode()==200){
return response.getEntity().getContent();
}
return null;
}
}
2. 사용자 의 기본 정보 획득
서버 에 요청 을 보 내 사용자 의 기본 정 보 를 가 져 옵 니 다.주: 왜 HTTPS 프로 토 콜 로 요청 을 보 냅 니까?공식 적 으로 HTTPS 프로 토 콜 을 사용 하여 API 인 터 페 이 스 를 호출 하면 SIG 인증 을 면제 할 수 있다 는 이 유 를 제시 했다.(모든 사람 이 플랫폼 을 개방 하 는 API:http://wiki.dev.renren.com/wiki/API) 1. 사용자 정보 획득 에 필요 한 매개 변수
String url = "https://api.renren.com/restserver.do";
Map<String, String> parameter = new HashMap<String, String>();
parameter.put("v", "1.0"); // API , 1.0
parameter.put("access_token", accessToken); // OAuth2.0 token。
parameter.put("format", "JSON"); // 。 JSON XML, JSON, XML
parameter.put("call_id", "1.0"); //
parameter.put("method", "users.getInfo"); // , , 。
주: AccessToken 의 값 은 우리 가 이전에 로 컬 에 저장 한 것 이 있 습 니 다. 가 져 오 는 방법 은 다음 과 같 습 니 다.
mAuthTokenManager = new AuthTokenManager(this);
String accessToken = mAuthTokenManager.getAccessToken();
LogUtil.e("EveryoneActivity", "accessToken = " + accessToken);
2. 비동기 네트워크 요청 보 내기
AsyncBaseRequest asyncHttpsPost = new AsyncHttpsPost(url, parameter, new ParseCallback() {
@Override
public Object parse(String json) throws JSONException {
LogUtil.i("EveryoneActivity", "json = " + json);
return null;
}
}, new ResultCallback() {
@Override
public void onSuccess(Object obj) {
}
@Override
public void onFail(int errorCode) {
// TODO Auto-generated method stub
}
});
mDefaultThreadPool.execute(asyncHttpsPost);
mAsyncRequests.add(asyncHttpsPost);
3. 네트워크 에서 되 돌려 달라 고 요청 한 JSON
[
{
"uid":461345584,
"tinyurl":"http://hdn.xnimg.cn/photos/hdn521/20130319/1930/h_tiny_zggz_8829000002e6113e.jpg",
"vip":1,
"sex":1,
"name":" 。。。",
"star":1,
"headurl":"http://hdn.xnimg.cn/photos/hdn521/20130319/1930/h_head_jbdD_8829000002e6113e.jpg",
"zidou":0
}
]
4. JSON 을 분석 합 니 다. (여기 서 우 리 는 한 필드 씩 풀 어야 하나 요? 아니요, 구 글 GSON 으로 해석 하 는 것 을 추천 합 니 다. 모 르 는 것 은 인터넷 에서 GSON 을 검색 하고 jar 패키지 가 져 오기 프로젝트 를 다운로드 하면 됩 니 다.)
new ParseCallback() {
@Override
public Object parse(String json) throws JSONException {
LogUtil.i("EveryoneActivity", "json = " + json);
Gson gson = new Gson();
java.lang.reflect.Type type = new TypeToken<LinkedList<UserBasicInfo>>(){}.getType();
LinkedList<UserBasicInfo> userList = gson.fromJson(json, type);
return userList.get(0);
}
}
5. 분석 한 결 과 를 되 돌려 줍 니 다.
new ResultCallback() {
@Override
public void onSuccess(Object obj) {
UserBasicInfo userBasic = (UserBasicInfo)obj;
LogUtil.i("EveryoneActivity", "userBasic = " + userBasic.toString());
}
@Override
public void onFail(int errorCode) {
// TODO Auto-generated method stub
}
}
3. 네트워크 요청 을 보 내 고 결 과 를 되 돌려 주 는 전체 코드 는 다음 과 같 습 니 다.
mAuthTokenManager = new AuthTokenManager(this);
String accessToken = mAuthTokenManager.getAccessToken();
LogUtil.e("EveryoneActivity", "accessToken = " + accessToken);
//
String url = "https://api.renren.com/restserver.do";
Map<String, String> parameter = new HashMap<String, String>();
parameter.put("v", "1.0"); // API , 1.0
parameter.put("access_token", accessToken); // OAuth2.0 token。
parameter.put("format", "JSON"); // 。 JSON XML, JSON, XML
parameter.put("call_id", "1.0"); //
parameter.put("method", "users.getInfo"); // , , 。
AsyncBaseRequest asyncHttpsPost = new AsyncHttpsPost(url, parameter, new ParseCallback() {
@Override
public Object parse(String json) throws JSONException {
LogUtil.i("EveryoneActivity", "json = " + json);
Gson gson = new Gson();
java.lang.reflect.Type type = new TypeToken<LinkedList<UserBasicInfo>>() {
}.getType();
LinkedList<UserBasicInfo> userList = gson.fromJson(json, type);
return userList.get(0);
}
}, new ResultCallback() {
@Override
public void onSuccess(Object obj) {
UserBasicInfo userBasic = (UserBasicInfo) obj;
LogUtil.i("EveryoneActivity", "userBasic = " + userBasic.toString());
}
@Override
public void onFail(int errorCode) {
// TODO Auto-generated method stub
}
});
mDefaultThreadPool.execute(asyncHttpsPost);
mAsyncRequests.add(asyncHttpsPost);
부대: 사용자 기본 정보 실체 류
package com.everyone.android.entity;
/**
* :
* @author android_ls
*
*/
public class UserBasicInfo {
private int uid; // id
private String tinyurl; // 50*50
private int sex; // , 1 ; 0
private String name; //
private int star; // , “1” “ ”; “0” “ ”
private String headurl; // 100*100
private int zidou; // vip , 1 ; 0
private int vip; // vip , zidou 1
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getTinyurl() {
return tinyurl;
}
public void setTinyurl(String tinyurl) {
this.tinyurl = tinyurl;
}
public int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getStar() {
return star;
}
public void setStar(int star) {
this.star = star;
}
public String getHeadurl() {
return headurl;
}
public void setHeadurl(String headurl) {
this.headurl = headurl;
}
public int getZidou() {
return zidou;
}
public void setZidou(int zidou) {
this.zidou = zidou;
}
public int getVip() {
return vip;
}
public void setVip(int vip) {
this.vip = vip;
}
@Override
public String toString() {
return "UserBasicInfo [uid=" + uid + ", tinyurl=" + tinyurl + ", sex=" + sex + ", name=" + name + ", star=" + star + ", headurl="
+ headurl + ", zidou=" + zidou + ", vip=" + vip + "]";
}
}
이 편 은 먼저 여기까지 이야기 하 겠 습 니 다. 위 에서 얻 은 사용자 정보 에 사용자 이미지 의 URL 이 있 습 니 다. 즉, 그림 이 로 컬 에 저장 되 고 처리 되 는 것 과 관련 된 것 입 니 다.다음 편 에 서 는 그림 의 더 블 캐 시 처리 에 대해 이야기 하 겠 습 니 다. 기대 하 세 요...
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Android 모방 클 라 이언 트 (v 5.7.1) - HTTPS 프로 토 콜 의 POST 방식 으로 사용자 의 기본 정 보 를 얻 습 니 다.Android 모방 클 라 이언 트 (v 5.7.1) - 네트워크 모듈 처리 구 조 를 기반 으로 확장 되 며 HTTPS 프로 토 콜 을 통 해 POST 방식 으로 네트워크 에 접근 하 는 처 리 를 추가 합 니 다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.