安卓开发 新浪微博share接口实现发带本地图片的微博

1.微博share接口

在开始之前,我们先看一下要用到的这个接口:


img_a64b813f4f69df77f9d5e6ae5c040c9e.png

    我们这次是要上传本地图片,可以很明确的知道,除了要用POST方式提交请求,还要采用multipart/form-data编码方式。

    那么这个multipart/form-data编码方式是什么呢?我查了许多资料,然而还是不懂。大概意思应该是把数据拼成web的POST结构。想详细了解的同学可以去参考其他大神的资料。

下面,咱们开始教程。

2.获取本地图片文件

通过Intent打开本地图库


img_c2b79a5ca1c9cdd91e2ea6ffcc47bd77.png

然后通过下面的方法获取图片路径


img_b444203c14163d37522f269eb2c13cf5.png

关于怎么获取图片路径我就不细讲了,网上资料很多,也不难。

获取路径后,将其装载入文件中,如图所示


img_fc818e133b23daea9a9b31844f3c4a1e.png

我获取到的scrPath = /storage/emulated/0/DCIM/P70819-094705.jpg

到此,图片文件的获取结束

3.构造请求体

我之前发纯文本微博时,使用 FormBodybody =newFormBody.Builder() 的形式来构造,

后来发现,带上图片的时候就不行了,我不知道怎么写。

然后采用了RequestBody requestBody =new MultipartBody.Builder()来构造。他们之间的区别我不是很清楚。

但是看源代码,似乎RequestBody更容易实现multipart/form-data编码方式。


img_f5df65036e550e25d73909275527eb84.png

当我们获取图片文件之后,就可以将其传到任何一个你觉得方便的地方(不传也可以),用于构造请求体。

.setType(MultipartBody.FORM)

这一句一定不能少,我也不知道为什么,少了之后服务器会说不是multipart/form-data编码方式。

然后如果是参数,使用.addFormDataPart()

如果是图片文件,使用addPart()

我还是附上代码,方便复制。

RequestBodyrequestBody;

requestBody =newMultipartBody.Builder()

.setType(MultipartBody.FORM)//请求的类型,貌似也叫请求头吧....

.addFormDataPart("access_token", access_token)//参数1

.addFormDataPart("status",  statuContent+"http://www.mob.com/downloads/")//参数2

.addPart(

Headers.of("Content-Disposition","form-data; name=\"pic\"; filename=\""+"pic.jpg"+"\""),

RequestBody.create(null, file))//图片文件

.build();

4.构造Request,发送请求

接下来就很简单了,这个和发纯文本的微博差不多。


img_5cbcdb5a78a79c335df96ed43f4ffdd1.png

我最后还用了异步数据处理,来接收返回来的一个statu,当返回的不是错误时,就证明你成功了。


img_5da7f69d52ee07f0d7365a07a20833e2.png
对应的handler

对应的解析方法我就不粘贴出来了,其实不解析也是可以看的,只是会乱点。

以上就是全部内容。

希望我的分享能让你们少走弯路.

相关参考链接:

http://blog.csdn.net/king866/article/details/52526901

http://blog.csdn.net/android_freshman/article/details/51910937

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/455290.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python编写装饰器_我也来写一下python装饰器

有借用,但原文出处已经找不到了,根据笔记分享一下解释器的基础。下面的代码表示,等待两秒钟,输出‘test is running。现在要求增加统计程序运行时间的功能。等待两秒钟,输出‘test is running,现要求增加统计程序运行时…

VirtualBox安装Centos6.8出现——E_INVALIDARG (0x80070057)

VirtualBox使用已有的虚拟硬盘出错: 问题描述:UUID已经存在 Cannot register the hard disk E:\system_iso\centos6.8.vdi {05f096aa-67fc-4191-983d-1ed00fc6cce9} because a hard disk E:\system_iso\centos68_02\centos6.8.vdi with UUID {05f096aa-6…

DFT 与 ATPG综 述

DFT 可测试性设计 工程会接触 DFT。需要了解 DFT 知识,但不需要深入。 三种基本的测试(概念来自参考文档): 边界扫描测试:Boundary Scan Test: 测试目标是 IO-PAD,利用 JTAG 接口互连以方便 测试。&#x…

非线性动力学_非线性动力学特辑 低维到高维的联通者

序言: 本文将以维度为主线, 带量大家进入非线性动力学的世界。 文章数学部分不需要全部理解, 理解思维方法为主非线性动力学,是物理学的思维进入传统方法所不能解决的问题的一座丰碑。它可以帮助我们理解不同复杂度和时间空间尺度…

Go语言channel与select原理

本文会尝试解释 go runtime 中 channel 和 select 的具体实现,部分内容来自 gophercon2017。Go版本为1.8.3channel 第一部分讲述一下 channel 的用法。channel 可以看做一个队列,用于多个goroutine之间的通信,例如下面的例子,一个…

Xadmin添加用户小组件出错

环境: Python 3.5.6 Django 2.1 Xadmin 原因: render函数在django2.1上有变化 解决方案: 1.在Python终端输入命令help(xadmin) 查看xadmin安装位置 得到如下输出 FILE/root/anaconda3/envs/learndjango/lib/python3.5/site-packages/xad…

成本预算的四个步骤_全网推广步骤有哪些?

全网推广的步骤是什么?一般来说,搜索引擎优化是大多数中小企业常用的推广方法。主要是通过对一些搜索引擎的排名来提高网站的曝光率,从而更好的提高自己网站的流量,从而更好的实现互联网层面的销售。接下来,让我们学习…

undefined reference to `std::cout'等错误

(1)gcc和g都是GNU(组织)的一个编译器。 (2)后缀名为.c的程序和.cpp的程序g都会当成是c的源程序来处理。而gcc不然,gcc会把.c的程序处理成c程序。 (3)对于.cpp的程序,编译可以用gcc/g…

FFPLAY的原理(二)

关于包Packets的注释从技术上讲一个包可以包含部分或者其它的数据,但是ffmpeg的解释器保证了我们得到的包Packets包含的要么是完整的要么是多种完整的帧。现在我们需要做的是让SaveFrame函数能把RGB信息定稿到一个PPM格式的文件中。我们将生成一个简单的PPM格式文件…

python生成requirements.txt的两种方法

python项目如何在另一个环境上重新构建项目所需要的运行环境依赖包? 使用的时候边记载是个很麻烦的事情,总会出现遗漏的包的问题,这个时候手动安装也很麻烦,不能确定代码报错的需要安装的包是什么版本。这些问题,requi…

node.js 安装使用http-server

node.js npm全局安装了http-server后我该怎么使用它?我在它的安装目录下创建了inde.html,浏览器localhost:8080可以访问,那我的项目需要放在它的安装目录下?还是需要在我的项目下配置什么或者使用什么指令启动它?我在我…

D - 卿学姐与魔法

卿学姐与魔法 Time Limit: 1200/800MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit Status“你的膜法也救不了你 在去拯救公主的道路上,卿学姐披荆斩棘,刀刃早已锈迹斑斑。 一日卿学姐正在为武器的问题发愁,碰到了正…

python对excel表统计视频教程_Python实现对excel文件列表值进行统计的方法

本文实例讲述了Python实现对excel文件列表值进行统计的方法。分享给大家供大家参考。具体如下:#!/usr/bin/env python#codinggbk#此PY用来统计一个execl文件中的特定一列的值的分类import win32com.clientfilenameraw_input("请输入要统计文件的详细地址&#…

mooc后台管理系统设计

摘 要 本设计采用Python中的Django框架实现Mooc后台管理界面设计,django是一个完整的开源web开源框架,使用起来能够快速的搭建你想要的网站,由于django自带后台管理系统,本设计中后台管理模板采用功能更加强大的Xadmin实现。数据库部分采用mysql5.7,由于django中有自带封装的数…

DirectShow系统初级指南

流媒体的处理,以其复杂性和技术性,一向广受工业界的关注。特别伴随着因特网的普及,流媒体在网络上的广泛应用,怎样使流媒体的处理变得简单而富有成效逐渐成为了焦点问题。选择一种合适的应用方案,事半功倍。此时&#…

正则正整数含0

^0?$|^([1-9][0-9]*)?$

MySQL 数据库导出导入操作

有时需要将 MySQL 数据库中的数据导入到其它的数据库中,这里以从 Ubuntu 系统的 MySQL 数据库导出 zabbix 这个数据库到 Windows 系统中的MySQL 为例。 导出数据库 导出数据其实非常方便,比如将 MySQL 中的 zabbix 这个数据库导出到当前文件夹&#xff…

您的apple id 暂时不符合使用此应用程序_Mac相机不工作时该怎么办

苹果公司的许多台式机和笔记本电脑都包含一个内置网络摄像头,该公司愉快地将其称为FaceTime相机。但是,如果您的Mac网络摄像头无法正常工作,并且在尝试访问它时显示为断开连接或不可用,则您可能不会感到高兴。您可以尝试以下操作来…

基于DirectShow的流媒体解码和回放

一、 前言  流媒体的定义很广泛,大多数时候指的是把连续的影像和声音信息经过压缩处理后放上网站服务器,让用户一边下载一边观看、收听,而不需要等整个压缩文件下载到自己机器就可以观看的视频/音频传输、压缩技术。流媒体也指代由这种技术…

《知易行难》扩展练习

在学习了《知易行难》后,这个是一个选做的扩展练习,但是里面的问题真的的很好,所以我也将在这里真实的分享,但是有些敏感的人名我就隐去了。 1. 这一年你做了些什么事情? 1)团队的整合,将团队…