/*
* Copyright 2011 Sina.
*
* Licensed under the Apache License and Weibo 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.open.weibo.com
* 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.
*/
package com.weibo.net;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.Socket;
import java.net.URL;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.net.UnknownHostException;
import java.security.KeyManagementException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.UnrecoverableKeyException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.GZIPInputStream;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.HttpVersion;
import org.apache.http.NameValuePair;
import org.apache.http.StatusLine;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.params.ConnRouteParams;
import org.apache.http.conn.scheme.PlainSocketFactory;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
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.apache.http.params.HttpProtocolParams;
import org.apache.http.protocol.HTTP;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.text.TextUtils;
import android.webkit.CookieManager;
import android.webkit.CookieSyncManager;
/**
* Utility class for Weibo object.
*
* @author ZhangJie (zhangjie2@staff.sina.com.cn)
*/
public class Utility {
private static WeiboParameters mRequestHeader = new WeiboParameters();
private static HttpHeaderFactory mAuth;
private static Token mToken = null;
public static final String BOUNDARY = "7cd4a6d158c";
public static final String MP_BOUNDARY = "--" + BOUNDARY;
public static final String END_MP_BOUNDARY = "--" + BOUNDARY + "--";
public static final String MULTIPART_FORM_DATA = "multipart/form-data";
public static final String HTTPMETHOD_POST = "POST";
public static final String HTTPMETHOD_GET = "GET";
public static final String HTTPMETHOD_DELETE = "DELETE";
private static final int SET_CONNECTION_TIMEOUT = 50000;
private static final int SET_SOCKET_TIMEOUT = 200000;
// 设置Token
public static void setTokenObject(Token token) {
mToken = token;
}
public static void setAuthorization(HttpHeaderFactory auth) {
mAuth = auth;
}
// 设置http头,如果authParam不为空,则表示当前有token认证信息需要加入到头中
public static void setHeader(String httpMethod, HttpUriRequest request,
WeiboParameters authParam, String url, Token token) throws WeiboException {
if (!isBundleEmpty(mRequestHeader)) {
for (int loc = 0; loc < mRequestHeader.size(); loc++) {
String key = mRequestHeader.getKey(loc);
request.setHeader(key, mRequestHeader.getValue(key));
}
}
if (!isBundleEmpty(authParam) && mAuth != null) {
String authHeader = mAuth.getWeiboAuthHeader(httpMethod, url, authParam,
Weibo.getAppKey(), Weibo.getAppSecret(), token);
if (authHeader != null) {
request.setHeader("Authorization", authHeader);
}
}
request.setHeader("User-Agent", System.getProperties().getProperty("http.agent")
+ " WeiboAndroidSDK");
}
public static boolean isBundleEmpty(WeiboParameters bundle) {
if (bundle == null || bundle.size() == 0) {
return true;
}
return false;
}
// 填充request bundle
public static void setRequestHeader(String key, String value) {
// mRequestHeader.clear();
mRequestHeader.add(key, value);
}
public static void setRequestHeader(WeiboParameters params) {
mRequestHeader.addAll(params);
}
public static void clearRequestHeader() {
mRequestHeader.clear();
}
public static String encodePostBody(Bundle parameters, String boundary) {
if (parameters == null)
return "";
StringBuilder sb = new StringBuilder();
for (String key : parameters.keySet()) {
if (parameters.getByteArray(key) != null) {
continue;
}
sb.append("Content-Disposition: form-data; name=\"" + key + "\"\r\n\r\n"
+ parameters.getString(key));
sb.append("\r\n" + "--" + boundary + "\r\n");
}
return sb.toString();
}
public static String encodeUrl(WeiboParameters parameters) {
if (parameters == null) {
return "";
}
StringBuilder sb = new StringBuilder();
boolean first = true;
for (int loc = 0; loc < parameters.size(); loc++) {
if (first)
first = false;
else
sb.append("&");
sb.append(URLEncoder.encode(parameters.getKey(loc)) + "="
+ URLEncoder.encode(parameters.getValue(loc)));
}
return sb.toString();
}
public static Bundle decodeUrl(String s) {
Bundle params = new Bundle();
if (s != null) {
String array[] = s.split("&");
for (String parameter : array) {
String v[] = parameter.split("=");
params.putString(URLDecoder.decode(v[0]), URLDecoder.decode(v[1]));
}
}
return params;
}
/**
* Parse a URL query and fragment parameters into a key-value bundle.
*
* @param url
* the URL to parse
* @return a dictionary bundle of keys and values
*/
public static Bundle parseUrl(String url) {
// hack to prevent MalformedURLException
url = url.replace("w
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
android新浪Oauth2.0分享0图片和文字到微博 (195个子文件)
all-wcprops 528B
all-wcprops 364B
all-wcprops 364B
all-wcprops 269B
all-wcprops 182B
all-wcprops 182B
all-wcprops 182B
all-wcprops 174B
all-wcprops 86B
all-wcprops 86B
all-wcprops 78B
all-wcprops 78B
all-wcprops 72B
all-wcprops 72B
all-wcprops 71B
all-wcprops 68B
all-wcprops 68B
all-wcprops 68B
resources.ap_ 311KB
com_weibo_android_example.apk 344KB
proguard.cfg 1KB
Utility.class 20KB
Weibo.class 10KB
ShareActivity.class 8KB
WeiboDialog.class 7KB
HttpHeaderFactory.class 7KB
TestActivity.class 6KB
WeiboDialog$WeiboWebViewClient.class 4KB
RequestHeader.class 3KB
Token.class 3KB
AccessTokenHeader.class 3KB
XAuthHeader.class 3KB
WebViewClient.class 3KB
AuthorizeActivity$AuthDialogListener.class 3KB
RequestTokenHeader.class 3KB
Weibo$1.class 3KB
WeiboParameters.class 2KB
AuthorizeActivity.class 2KB
TestActivity$1.class 2KB
SslError.class 2KB
ShareActivity$1.class 2KB
AsyncWeiboRunner$1.class 2KB
Utility$MySSLSocketFactory.class 2KB
WeiboException.class 2KB
Oauth2AccessTokenHeader.class 2KB
AuthorizeActivity$1.class 1KB
ShareActivity$4.class 1KB
AsyncWeiboRunner.class 1KB
Utility$MySSLSocketFactory$1.class 1KB
ShareActivity$3.class 1KB
Oauth2AccessToken.class 1KB
ShareActivity$2.class 1004B
R$id.class 933B
R$drawable.class 930B
WeiboDialog$1.class 913B
R$string.class 873B
TestActivity$2.class 860B
DialogError.class 772B
R$dimen.class 754B
R.class 745B
NullCheckUtil.class 555B
AccessToken.class 505B
R$color.class 497B
R$layout.class 487B
R$style.class 422B
AsyncWeiboRunner$RequestListener.class 378B
R$attr.class 361B
RequestToken.class 359B
WeiboDialogListener.class 318B
.classpath 364B
classes.dex 62KB
entries 1KB
entries 602B
entries 602B
entries 564B
entries 412B
entries 412B
entries 412B
entries 398B
entries 311B
entries 257B
entries 257B
entries 249B
entries 249B
entries 241B
entries 241B
entries 235B
entries 235B
entries 228B
Utility.java 25KB
Weibo.java 14KB
ShareActivity.java 10KB
HttpHeaderFactory.java 9KB
WeiboDialog.java 9KB
WebViewClient.java 8KB
WeiboException.java 6KB
TestActivity.java 6KB
AuthorizeActivity.java 6KB
R.java 4KB
SslError.java 4KB
共 195 条
- 1
- 2
hellonihao100
- 粉丝: 2
- 资源: 17
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 毕业设计-仿生六足机器人的制作全教程源码+电子元器件+程序代码+线路组件图+安装教程+搭建视频教程
- 基于ROS和webots的xrobot机械臂仿真初探C++源码
- 基于ROS的点焊机器人仿真与控制python源码+文档说明+使用说明+详细注释
- 基于vue实现的细粒度交通时空大数据分析系统+源代码+文档说明
- 安卓大作业-基于Electron的交通时空大数据分析挖掘系统客户端(Android)+源代码+文档说明+界面截图
- 基于Java的朱氏集团客户关系管理系统设计源码
- 基于C++的作业提交与批改系统设计源码
- 基于Vue2的移动端电影资讯网站设计源码
- 高分课程设计作业-基于QT的模仿宝石迷阵游戏C++源码+文档说明+界面截图
- 基于Apache Spark的Spark DistCP重实现设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页