您的位置:首页 > 其它

新浪微薄份额2(分享)

2015-07-04 17:40 211 查看
上一篇文章描述了webview获得accessToken方法。那么我们说一下分享。

分享有两个接口,他们是post要求
https://api.weibo.com/2/statuses/update.json//纯文本界面共享 https://upload.api.weibo.com/2/statuses/upload.json //文本图片分享接口

private static final String ADD_PIC_T = "https://upload.api.weibo.com/2/statuses/upload.json";
private static final String ADD_T = "https://api.weibo.com/2/statuses/update.json";
private static final String[] ADD_SHARE_PARAMS = { "access_token", "status", "long", "lat" , "rip"};


ApiInfo.java

public class ApiInfo {
private static final String TAG = "ApiInfo";

public static final int REQ_GET = 0;
public static final int REQ_POST = 1;
public static final int REQ_PUT = 2;

private String method;
private String host;
private int requstType;
private String[] paramNames;
private Map<String, Object> params;

private String filePath;

public ApiInfo(String host, String method, String[] paramNames) {
this.host = host;
this.method = method;
this.paramNames = paramNames;
this.params = new HashMap<String, Object>();
}

public ApiInfo(String host, String method, String[] paramNames, int requestType) {
this.host = host;
this.method = method;
this.paramNames = paramNames;
this.requstType = requestType;
this.params = new HashMap<String, Object>();
}

public String getFilePath() {
return filePath;
}

public void setFilePath(String filePath) {
this.filePath = filePath;
}

public int getRequstType() {
return requstType;
}

public void setRequstType(int requstType) {
this.requstType = requstType;
}

public String getMethod() {
return method;
}

public void setMethod(String method) {
this.method = method;
}

public String[] getParamNames() {
return paramNames;
}

public void setParamNames(String[] paramNames) {
this.paramNames = paramNames;
}

public Map<String, Object> getParams() {
if (params == null)
params = new HashMap<String, Object>();
return params;
}

public void setParams(Map<String, Object> params) {
this.params = params;
}

public String getHost() {
return host;
}

public void setHost(String host) {
this.host = host;
}
public String getPlainUrl() {
StringBuffer url = new StringBuffer();
url.append(host);
url.append(method);
url.append("?");
for (String paramName : getParamNames()) {
LogInfo.d(TAG, "paramName=" + paramName);
url.append(paramName);
url.append("=");
if (getParams().get(paramName) != null)
try {
url.append(URLEncoder.encode(getParams().get(paramName).toString(), "UTF-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
url.append("&");
}
url.deleteCharAt(url.length() - 1);
return url.toString();
}
}


分享方法share2Weibo,拼接请求參数

public void share2Weibo(String content, String img) {
ApiInfo apiInfo = new ApiInfo(ADD_PIC_T, "", ADD_PIC_T_PARAMS, ApiInfo.REQ_POST);
Map<String, Object> params = new HashMap<String, Object>();
params.put(ADD_PIC_T_PARAMS[0], oAuth.accessToken);
params.put(ADD_PIC_T_PARAMS[1], content);
params.put(ADD_PIC_T_PARAMS[2], "0.0");
params.put(ADD_PIC_T_PARAMS[3], "0.0");
params.put(ADD_PIC_T_PARAMS[4],  AndroidUtils.GetHostIp());
apiInfo.setParams(params);
String imgPath = null;
if (!TextUtils.isEmpty(img))
if (IOUtils.getCacheImageFile(context, img) != null) {//通过path推断图片是否存在
imgPath = IOUtils.getCacheImageFile(context, img).getAbsolutePath();
} else
apiInfo.setHost(ADD_T);//假设图片不存在更改分享内容的url

new ShareTask(apiInfo).execute(imgPath);
}


ShareTask.java 联网发送post请求,分享内容

class ShareTask extends AsyncTask<String, Object, Json> {

private ApiInfo apiInfo;

public ShareTask(ApiInfo apiInfo) {
this.apiInfo = apiInfo;
}

@Override
protected Json doInBackground(String... params) {
String result = "";
if (params.length > 0 && params[0] != null) {
result = new String(httpClient.uploadFile(apiInfo.getPlainUrl(), "pic", params[0]));
} else
result = new String(httpClient.request(apiInfo.getPlainUrl(), apiInfo.getRequstType() == ApiInfo.REQ_POST));
LogInfo.d(TAG, "result:" + result);
Json json = new Json(result);
return json;
}

@Override
protected void onPostExecute(Json result) {

super.onPostExecute(result);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: