Skip to content

Commit

Permalink
项目文档补充
Browse files Browse the repository at this point in the history
  • Loading branch information
bihe0832 committed Dec 29, 2016
1 parent 7f98f31 commit 8ae4bd7
Show file tree
Hide file tree
Showing 12 changed files with 143 additions and 53 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,11 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
* 基本的工具类 处理字符串判空、编码格式转换等
*/
public class TextUtils {
/**
* 判断字符串是否为空
*
* @param s
* 需要判断的字符串
* @return boolean 为空返回true
*/

public static boolean ckIsEmpty(String s) {
if (s == null || s.trim().equals("") || s.trim().equals("null")) {
return true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
import java.util.Map;

/**
* HttpURLConnection封装基类,网络请求,设置请求协议头、发送请求
*
* Created by hardyshi on 16/11/22.
*/
public abstract class BaseConnection {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
import java.net.URL;

/**
* Created by hardyshi on 16/11/22.
*
* HTTP 请求类
*
*/
public class HTTPConnection extends BaseConnection {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.bihe0832.request.libware.request;

/**
* Created by hardyshi on 16/11/22.
* 网络请求基类中将请求结果处理后的返回内容转化为业务逻辑相关错误
*/
public abstract class HTTPRequestHandler {
public abstract void onSuccess(int statusCode,String response);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import javax.net.ssl.TrustManager;

/**
* Created by hardyshi on 16/11/22.
* HTTPS 请求类
*/
public class HTTPSConnection extends BaseConnection {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@

import java.net.HttpURLConnection;

/**
* 网络请求分发、执行类
*/
public class HTTPServer {

private static final String LOG_TAG = "bihe0832 REQUEST";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@

import java.util.HashMap;

/**
*
* 网络请求实例类的基类,所有具体的网络请求都是他的实现,他与{@link HttpResponse}一般成对使用
*
*/

public abstract class HttpRequest {

Expand Down Expand Up @@ -56,19 +61,12 @@ public void onSuccess(int statusCode,String response) {
if(TextUtils.ckIsEmpty(response)){
Log.e(LOG_TAG,"responseBody is null");
}else{
int flag = HTTPServer.Error;
try {
JSONObject json = new JSONObject(response);
int ret = json.getInt(HttpResponse.HTTP_RESP_PARAM_RET);
if (ret == 0) {
flag = HTTPServer.Succ;
} else {
flag = ret;
}
onRequestSuccess(ret, json);
} catch (JSONException e) {
flag = HTTPServer.HttpRespParseError;
onRequestFailure(flag, response);
onRequestFailure(HTTPServer.HttpRespParseError, response);
}
}
}catch (Exception e){
Expand All @@ -79,18 +77,13 @@ public void onSuccess(int statusCode,String response) {

@Override
public void onFailure(int statusCode, String responseBody) {
if (null == responseBody) {
Log.e(LOG_TAG,"responseBody is null");
onRequestFailure(statusCode, null);
}else{
onRequestFailure(statusCode, responseBody);
}
int code = HTTPServer.NetWorkException;
if (statusCode == 0) {
code = HTTPServer.NetWorkException;
} else if (statusCode > 300) {
code = HTTPServer.HttpSatutsError;
}
onRequestFailure(code, responseBody);
}
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,13 @@
import org.json.JSONException;
import org.json.JSONObject;


/**
*
* 网络请求返回结果的基类,所有具体的网络请求返回都是他的实现,他与{@link HttpRequest}一般成对使用
*
*/

public abstract class HttpResponse {
private static final String LOG_TAG = "bihe0832 REQUEST";

Expand Down Expand Up @@ -38,9 +45,9 @@ public void parseSuccessResponse(int ret, JSONObject responseJson) {
}
}

public void parseFailureResponse(int statusCode,String errorResponse) {
public void parseFailureResponse(int flag,String errorResponse) {
this.ret = HTTPServer.RET_FAIL;
this.flag = processNetErrorCode(statusCode);
this.flag = flag;
if(!TextUtils.ckIsEmpty(errorResponse)){
this.msg = errorResponse;
}
Expand Down Expand Up @@ -87,18 +94,4 @@ public String toString() {
builder.append("&msg=" + msg);
return builder.toString();
}

/**
* @param statusCode
* 当其值为0时说明是异常类错误;当其值为大于300时,说明是http错误;否则的话按默认系统错误处理 网络请求模块的错误处理
*/
private int processNetErrorCode(int statusCode) {
int code = HTTPServer.NetWorkException;
if (statusCode == 0) {
code = HTTPServer.NetWorkException;
} else if (statusCode > 300) {
code = HTTPServer.HttpSatutsError;
}
return code;
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
package com.bihe0832.request.libware.request;

/**
* 具体业务网络请求结果实例的基类
*/
public interface HttpResponseHandler<T> {
public void onResponse(T response);
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,7 @@
import javax.net.ssl.TrustManagerFactory;
import javax.net.ssl.X509TrustManager;

/**
* Created by hardyshi on 16/11/23.
*/

public class MyX509TrustManager implements X509TrustManager {
X509TrustManager sunJSSEX509TrustManager;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import java.util.concurrent.atomic.AtomicInteger;

/**
* Created by hardyshi on 16/6/2.
* 基于HandlerThread的多线程处理分发类
*/
public class ThreadManager {

Expand Down
116 changes: 107 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,116 @@
└── Basic:com.bihe0832.request.demo.basic.apk对应的源码

## 支持类型
## 项目区别

### 请求类型
Advanced和Basic的差异主要表现在

- HTTP
- HTTPS
### 共同点

### 请求类型
- 两个项目的网络请求都是基于HTTPURLConnection封装的

- GET
- POST
- 两个项目都支持以下请求:
- 请求协议:通过url是以http开头还是https
- HTTP
- HTTPS

### 其他
- 请求类型:通过网络请求是否包含data内容来区分get或者post
- GET
- POST
- 其他
- 支持带cookie的网络请求

- 支持带cookie的网络请求

### 差异点

- Advanced所有的网络请求时单线程分发,但是多线程处理的;Basic的网络请求的处理和分发都是在同一个线程
- Advanced会在库里面完成网络请求结果的解析,最终网络请求结果会被处理为一个json数据,Basic层没有做任何处理,将网络请求的内容以String返回。

## 代码介绍

代码介绍的篇幅主要介绍封装的库以及使用时候的调用方法,主要以Advanced为基础来介绍,例外这里不对源码做详细的介绍,只介绍几个主要类的使用方法,详细代码请自行参照源码。

### 封装源码介绍

这部分内容是对于HttpURLConnection的具体封装的代码。


├── TextUtils.java :基本的工具类 处理字符串判空、编码格式转换等
├── request
│ │
│   ├── BaseConnection.java :基本的工具类 处理字符串判空、编码格式转换等
│ │
│   ├── HTTPConnection.java :HTTP 请求类
│ │
│   ├── HTTPRequestHandler.java :网络请求基类中将请求结果处理后的返回内容转化为业务逻辑相关错误
│ │
│   ├── HTTPSConnection.java :HTTPS 请求类
│ │
│   ├── HTTPServer.java :网络请求分发、执行类
│ │
│   ├── HttpRequest.java :网络请求实例类的基类,所有具体的网络请求都是他的实现
│ │
│   ├── HttpResponse.java :网络请求返回结果的基类,所有具体的网络请求返回都是他的实现
│ │
│   ├── HttpResponseHandler.java :具体业务网络请求结果实例的基类
│ │
│   └── MyX509TrustManager.java
└── thread
└── ThreadManager.java :基于HandlerThread的多线程处理分发类
### 具体请求实例

这部分内容是具体开发中一个新的HTTP请求以及返回结果解析处理的类

├── GetRequest.java : 一个GET请求的事例,完成了GET参数拼装
├── PostRequest.java : 一个POST请求的事例,完成了POST参数拼装
└── TestResponse.java :请求返回处理事例,完成请求结果的解析。由于上面两个请求的返回结构一致,因此使用相同的结果处理类

### 调用代码

这部分内容是具体开发中当发送一个对应的网络请求的时候的代码实现

//具体GET请求构造实例
private void sendGetRequest(){
String para = mRequestParaEditText.getText().toString();
if(null != para && para.length() > 0){
TestResponesHandler handle = new TestResponesHandler();
GetRequest request = new GetRequest(para,handle);
HTTPServer.getInstance().doRequest(request);
}else{
showResult("请在输入框输入请求内容!");
}
}

//具体POST请求构造实例
private void sendPostRequest(){
String para = mRequestParaEditText.getText().toString();
if(null != para && para.length() > 0){
TestResponesHandler handle = new TestResponesHandler();
PostRequest request = new PostRequest(para,handle);
HTTPServer.getInstance().doRequest(request);
}else{
showResult("请在输入框输入请求内容!");
}
}

//具体请求返回结果的处理逻辑
private class TestResponesHandler implements HttpResponseHandler<TestResponse> {

@Override
public void onResponse(TestResponse response) {
showResult("ret:\n\t" + response.ret + " \n " +
"msg:\n\t" + response.msg+ " \n " +
"para:\n\t" + response.para+ " \n ");
}
}




0 comments on commit 8ae4bd7

Please sign in to comment.