博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android进阶2之新浪微博采用Oauth发送图片和文字
阅读量:6687 次
发布时间:2019-06-25

本文共 2442 字,大约阅读时间需要 8 分钟。

本以为新浪发布图片和发布文字一样的简单,但很悲剧。。。。。。。远不是想象的那样。

现在分享一下代码。

 

/** * 发表带图片的微博 * * @param token * @param tokenSecret * @param status * 发表的内容 * @param urlPath * 图片的地址 本函数没有用到,我直接在函数中创建的。 * @return */ public static void uploadStatus(String token, String tokenSecret, String imageUrl, String status) { File files = Environment.getExternalStorageDirectory(); String sdPath = files.getAbsolutePath(); // 请保证SD卡根目录下有这张图片文件 String urlPath = sdPath + "/" + "c.jpg"; File imageFile = new File(urlPath); if (!imageFile.exists()) { System.out.println("没有该图片"); } httpOauthConsumer = new DefaultOAuthConsumer("你的AppKey","你的AppSecret");//记得用你的替换一下 httpOauthConsumer.setTokenWithSecret(token, tokenSecret);//token tokenSecret之前工作的任务 try { URL url = new URL(Constants.XinLangUpload);//URL:http://api.t.sina.com.cn/statuses/upload.json HttpURLConnection request = (HttpURLConnection) url.openConnection(); request.setDoOutput(true); request.setRequestMethod("POST"); HttpParameters httpParameters = new HttpParameters(); httpParameters.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(imageFile); byte[] file = new byte[(int) imageFile.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 + imageFile.length() + end_data.length)); // 设置内容长度 httpOauthConsumer.setAdditionalParameters(httpParameters); httpOauthConsumer.sign(request); OutputStream outputStream = request.getOutputStream(); outputStream.write(content.getBytes()); outputStream.write(status.getBytes()); outputStream.write(pic.getBytes()); outputStream.write(file); outputStream.write(end_data); outputStream.flush(); outputStream.close(); request.connect(); if (200 == request.getResponseCode()) { System.out.println("发布成功"); } else { System.out.println("异常code:" + request.getResponseCode()); } } catch (Exception e1) { e1.printStackTrace(); } }

转载地址:http://drhao.baihongyu.com/

你可能感兴趣的文章
对SpringAop的思考之基于jdk的动态代理
查看>>
openstack学习笔记五 多节点部署之 rabbitmq信息中枢与元数据
查看>>
揭秘设计模式:适配器模式(Adapter)
查看>>
centos救援模式修改root密码
查看>>
我的友情链接
查看>>
Linux系统的启动和修复模式
查看>>
软件发布版本区别介绍
查看>>
kvm虚拟机迁移
查看>>
Docker 修改docker容器内部时间
查看>>
解决windows下redis狂占C盘内存
查看>>
yii2高级模板添加新增模块
查看>>
【推荐】(SqlServer)不公开存储过程sp_Msforeachtable与sp_Msforeachdb详解
查看>>
TURBOGATE邮件网关——最经济高效的企业网关选择
查看>>
MS14-058 最新提权神器
查看>>
数据挖掘算法(Analysis Services – 数据挖掘)
查看>>
Apache配置详解(最好的APACHE配置教程)
查看>>
CentOS 7 下基于基 bitnami 安装部署 redmine
查看>>
linux ubuntu apt-get 更换源
查看>>
【Web探索之旅】第二部分第三课:框架和内容管理系统
查看>>
Javascript中公有成员,私有成员,静态成员
查看>>