GoHttp是Android上的一个用来发送Http请求的库,旨在用最简单、最快捷的方式从网络上拿到我们想要的数据
###特性(Features)
- 异步发送Http请求;
- 全新设计的API,让发送Http请求以及处理请求结果、监听请求过程和进度更加简单、高效、舒适;
- 支持用请求对象发送Http请求的网络框架,这将大大降低程序复杂度,让你越用越爽;
- 支持在本地缓存Http响应;
- 内置多种Http响应处理器,可以直接实现将Http响应转成字符串、字节数组或下载文件以及将JSON格式的字符串转成Java对象;
- 完全的开放,你可以自定义缓存管理、请求处理、Http响应处理,甚至添加一种新的HttpRequest;
- 内置一系列的HttpHeader,方便你往HttpRequest中添加Header或从HttpResponse中获取Header;
###使用(Usage)
####1. 导入GoHttp(Import GoHttp to your project)
#####使用Gradle(Use Gradle)
从JCenter仓库导入(Import from jcenter)
dependencies{
compile 'me.xiaopan:gohttp:1.2.0'
}
离线模式(Offline work)
首先到releases页面下载最新版的aar包(这里以gohttp-1.2.0.aar为例,具体请以你下载的版本为准
),并放到你module的libs目录下
然后在你module的build.gradle文件中添加以下代码:
repositories{
flatDir(){
dirs 'libs'
}
}
dependencies{
compile(name:'gohttp-1.2.0', ext:'aar')
}
最后同步一下Gradle即可
#####使用Eclipse(Use Eclipse)
- 首先到releases页面下载最新版的aar包(
这里以gohttp-1.2.0.aar为例,具体请以你下载的版本为准
) - 然后改后缀名为zip并解压
- 接下来将classes.jar重命名为gohttp-1.2.0.jar
- 最后拷贝gohttp-1.2.0.jar到你项目的libs目录下
####2. 示例(Sample) 发送Http请求获取MIUI首页的源码
public class StringActivity extends MyActivity {
private WebViewManager webViewManager;
private HttpRequestFuture httpRequestFuture;
@SuppressLint("HandlerLeak")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web);
webViewManager = new WebViewManager((WebView) findViewById(R.id.web1));
httpRequestFuture = GoHttp.with(getBaseContext()).newRequest("http://www.miui.com/forum.php", new StringHttpResponseHandler(), new HttpRequest.Listener<String>() {
@Override
public void onStarted(HttpRequest httpRequest) {
// 提示正在加载
}
@Override
public void onCompleted(HttpRequest httpRequest, HttpResponse httpResponse, String responseContent, boolean isCache, boolean isContinueCallback) {
// 显示HTML源代码
ContentType contentType = ContentType.fromHttpMessage(httpResponse);
webViewManager.getWebView().loadDataWithBaseURL(null, responseContent, contentType.getMimeType(), contentType.getCharset("UTF-8"), null);
}
@Override
public void onFailed(HttpRequest httpRequest, HttpResponse httpResponse, HttpRequest.Failure failure, boolean isCache, boolean isContinueCallback) {
// 显示失败提示
}
@Override
public void onCanceled(HttpRequest httpRequest) {
// 当请求被取消的时候你可以在这里做一些处理
}
}).progressListener(new HttpRequest.ProgressListener() { // 设置进度监听器
@Override
public void onUpdateProgress(HttpRequest httpRequest, long totalLength, long completedLength) {
// 更新进度
}
}).cacheConfig(new CacheConfig(20 * 1000)) // 设置缓存Http响应20秒
.go(); // 发送请求
}
@Override
public void onBackPressed() {
if(webViewManager.getWebView().canGoBack()){
webViewManager.getWebView().goBack();
}else{
super.onBackPressed();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
// 在Activity销毁的时候如果请求尚未完成就取消
if(httpRequestFuture != null && !httpRequestFuture.isFinished()){
httpRequestFuture.cancel(true);
}
}
}
####你可能还感兴趣的功能
###License
/*
* Copyright (C) 2013 Peng fei Pan <[email protected]>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/