java+微博上传图片_java_java实现新浪微博Oauth接口发送图片和文字的方法,本文实例讲述了java实现新浪微 - phpStudy...

java实现新浪微博Oauth接口发送图片和文字的方法

本文实例讲述了java实现新浪微博Oauth接口发送图片和文字的方法。分享给大家供大家参考。具体如下:

基于网上很多人利用新浪api开发新浪微博客户端的时候遇到无法发图片的问题,很多人卡在了这一布。现将代码呈上,希望能帮到一些朋友。

/**

* 发表带图片的微博

* @param token

* @param tokenSecret

* @param aFile

* @param status

* @param urlPath

* @return

*/

public String uploadStatus(String token, String tokenSecret, File aFile, String status, String urlPath) {

httpOAuthConsumer = new DefaultOAuthConsumer(consumerKey,consumerSecret);

httpOAuthConsumer.setTokenWithSecret(token,tokenSecret);

String result = null;

try {

URL url = new URL(urlPath);

HttpURLConnection request = (HttpURLConnection) url.openConnection();

request.setDoOutput(true);

request.setRequestMethod("POST");

HttpParameters para = new HttpParameters();

para.put("status", URLEncoder.encode(status,"utf-8").replaceAll("\\+", "%20"));

String boundary = "---------------------------37531613912423";

String content = "--"+boundary+"\r\nContent-Disposition: form-data; name=\"status\"\r\n\r\n";

String pic = "\r\n--"+boundary+"\r\nContent-Disposition: form-data; name=\"pic\"; filename=\"image.jpg\"\r\nContent-Type: image/jpeg\r\n\r\n";

byte[] end_data = ("\r\n--" + boundary + "--\r\n").getBytes();

FileInputStream stream = new FileInputStream(aFile);

byte[] file = new byte[(int) aFile.length()];

stream.read(file);

request.setRequestProperty("Content-Type", "multipart/form-data; boundary="+boundary); //设置表单类型和分隔符

request.setRequestProperty("Content-Length", String.valueOf(content.getBytes().length + status.getBytes().length + pic.getBytes().length + aFile.length() + end_data.length)); //设置内容长度

httpOAuthConsumer.setAdditionalParameters(para);

httpOAuthConsumer.sign(request);

OutputStream ot = request.getOutputStream();

ot.write(content.getBytes());

ot.write(status.getBytes());

ot.write(pic.getBytes());

ot.write(file);

ot.write(end_data);

ot.flush();

ot.close();

request.connect();

if (200 == request.getResponseCode()) {

result = "SUCCESS";

}

} catch (FileNotFoundException e1) {

e1.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} catch (OAuthMessageSignerException e) {

e.printStackTrace();

} catch (OAuthExpectationFailedException e) {

e.printStackTrace();

} catch (OAuthCommunicationException e) {

e.printStackTrace();

}

return result;

}

希望本文所述对大家的java程序设计有所帮助。相关阅读:

hideFocus(虚线框处理小技巧)

C语言中查找字符在字符串中出现的位置的方法

ie9 提示'console' 未定义问题的解决方法

Win10一周年更新6月Bug大扫除活动从下周开启

C#绘制椭圆的方法

基于JS实现密码框(password)中显示文字提示功能代码

Android中Notification 提示对话框

jQuery实现根据滚动条位置加载相应内容功能

Android解析json数组对象的方法及Apply和数组的三个技巧

.net开发微信公众平台实例教程

javascript字母大小写转换的4个函数详解

Win10 Mobile/PC版中邮件和日历更新 新增周视图/暗黑主题增强

Win8把索引文件Windows.edb转移到非系统盘的方法

利用HTML5中的Canvas绘制一张笑脸的教程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用springboot做基础框架,提供简单页面做图片上传接口直接模拟微博登陆,上传完成后返回图片保存链接 public String getSinaCookies() { String base64name = Base64Utils.encodeToString(username.getBytes()); String loginUrl = "https://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.15)&_=1403138799543"; String params = "entry=sso&gateway=1&from=null&savestate=30&useticket=0&pagerefer;=&vsnf=1&su;=" + base64name; params += "&service=sso&sp;=" + password + "&sr=1920*1080&encoding=UTF-8&cdult=3&domain=sina.com.cn&prelt=0&returntype=TEXT"; //登录 try { URL url = new URL(loginUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setDoInput(true); conn.setDoOutput(true); conn.setRequestMethod("POST"); OutputStream out = conn.getOutputStream(); out.write(params.getBytes()); out.flush(); out.close(); String sessionId = ""; String cookieVal = ""; String key = null; //取cookie for (int i = 1; (key = conn.getHeaderFieldKey(i)) != null; i++) { if (key.equalsIgnoreCase("set-cookie")) { cookieVal = conn.getHeaderField(i); cookieVal = cookieVal.substring(0, cookieVal.indexOf(";")); sessionId = sessionId + cookieVal + ";"; } } if (sessionId != null) { String[] cookiearr = sessionId.split(";"); for (int i = 0; i < cookiearr.length; i++) { if (cookiearr[i].startsWith("SUB") && !cookiearr[i].startsWith("SUBP")) { sessionId = cookiearr[i] + ";"; } } } return sessionId; } catch (Exception e) { e.printStackTrace(); return null; } }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值