腾讯的API(add_pic_t)微博中发送文字和图片,下面的方法可以成功发送文字,但是图片无法显示,望高手点教斧正,万分感谢。

川哥编程 2014-03-13 02:33:41
腾讯的API(add_pic_t)微博中发送文字和图片,下面的方法可以成功发送文字,但是图片无法显示,望高手点教斧正,万分感谢。
pic参数描述:要上传的图片的文件名以及图片的内容(在发送请求时,图片内容以二进制数据流的形式发送,见下面的请求示例)。图片仅支持gif、jpeg、jpg、png、bmp及ico格式(所有图片都会重新压缩,gif被重新压缩后不会再有动画效果),图片size小于4M。

add_pic_t: http://wiki.connect.qq.com/add_pic_t

public string AddPicToTencentWeibo(string access_token, string oauth_consumer_key, string openid, string content, string url) {
WebRequest req = WebRequest.Create(url);
HttpWebRequest rq = req as HttpWebRequest;
if (rq == null) {
return null;
}
rq.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
//httpRequest.ContentType = "application/x-www-form-urlencoded";
rq.Method = "POST";

string boundary = Guid.NewGuid().ToString();
string header = string.Format("--{0}", boundary);
string footer = string.Format("--{0}--", boundary);

var sb = new StringBuilder();
rq.ContentType = string.Format("multipart/form-data; boundary={0}", boundary);
sb.AppendLine(header);
sb.AppendLine(String.Format("Content-Disposition: form-data; name=\"{0}\"", "access_token"));
sb.AppendLine("Content-Type: text/plain; charset=utf-8");
//contents.AppendLine("Content-Transfer-Encoding: 8bit");
sb.AppendLine();
sb.AppendLine(access_token);

sb.AppendLine(header);
sb.AppendLine(string.Format("Content-Disposition: form-data; name=\"{0}\"", "oauth_consumer_key"));
sb.AppendLine("Content-Type: text/plain; charset=utf-8");
//contents.AppendLine("Content-Transfer-Encoding: 8bit");
sb.AppendLine();
sb.AppendLine(oauth_consumer_key);

sb.AppendLine(header);
sb.AppendLine(string.Format("Content-Disposition: form-data; name=\"{0}\"", "openid"));
sb.AppendLine("Content-Type: text/plain; charset=utf-8");
//contents.AppendLine("Content-Transfer-Encoding: 8bit");
sb.AppendLine();
sb.AppendLine(openid);

sb.AppendLine(header);
sb.AppendLine(string.Format("Content-Disposition: form-data; name=\"{0}\"", "content"));
sb.AppendLine("Content-Type: text/plain; charset=utf-8");
//contents.AppendLine("Content-Transfer-Encoding: 8bit");
sb.AppendLine();
sb.AppendLine(content);

sb.AppendLine(header);
string fileHeader = string.Format("Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"", "pic", "qq_female.jpg");
string fileData = Encoding.Default.GetString(File.ReadAllBytes(Server.MapPath("/ig/lovely/qq_female.jpg")));

sb.AppendLine(fileHeader);
sb.AppendLine("Content-Type:image/jpeg");
sb.AppendLine("Content-Transfer-Encoding: binary");
sb.AppendLine();
sb.AppendLine(fileData);
sb.AppendLine(footer);

byte[] data = Encoding.UTF8.GetBytes(sb.ToString());
rq.ContentLength = data.Length;

Stream stream = rq.GetRequestStream();
stream.Write(data, 0, data.Length);
stream.Close();

Stream stm;
try {
stm = rq.GetResponse().GetResponseStream();
} catch (Exception e) {
return e.ToString();
}

string result = string.Empty;
using (StreamReader reader = new StreamReader(stm, Encoding.UTF8)) {
try {
result = reader.ReadToEnd();
} finally {
reader.Close();
reader.Dispose();
}
}
stm.Close();
stm.Dispose();
return result;
}
...全文
368 5 打赏 收藏 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
川哥编程 2014-03-16
  • 打赏
  • 举报
回复
引用 1 楼 liyichuanZhengzhou 的回复:
up from myself
all the problems have been settled, but thank you for the same
川哥编程 2014-03-16
  • 打赏
  • 举报
回复
all the problems have been settled, but thank you for the same
川哥编程 2014-03-16
  • 打赏
  • 举报
回复
although all problem have been settled, but still thank you for your help.
机器人 2014-03-13
  • 打赏
  • 举报
回复
Encoding.Default.GetString 不对,应该是通过 Request Stream 往里写。 具体参考: http://stackoverflow.com/questions/566462/upload-files-with-httpwebrequest-multipart-form-data
川哥编程 2014-03-13
  • 打赏
  • 举报
回复
up from myself
内容概要:WiFiSupply斯普莱WFS7000BI是一款高性能、电信工业级的室外型大功率无线基站,支持5.8GHz全频段(4920-6100MHz),基于MIMO 2T2R架构,最大发射功率达30dBm/1000mw,无线带宽最高300Mbps,点对点实际吞吐量超过150Mbps,支持TDMA时分多址技术,通信延迟≤1ms,具备强抗干扰能力和超远传输距离(桥接可达150公里以上)。设备集成16dBi双极化扇区天线,支持快速无缝漫游、多SSID、VLAN、QoS、VPN、防火墙、巨量安全隧道等多种网络功能,采用IP68防护等级和宽温设计(-45~85℃),具备防浪涌、防静电、电磁屏蔽等工业级防护特性,适用于复杂环境下的无线桥接与覆盖。支持胖瘦AP模式、本地及云端管理,并提供API接口实现第三方平台集成。; 适合人群:从事工业无线网络建设、系统集成、智能交通、智慧物流等领域的网络工程师、技术负责人及项目实施人员。; 使用场景及目标:适用于智慧交通、工业4.0、AMR/AGV小车组网、无人机遥控、车载船载视频传输、驾驶员考试系统、森林防火监控等对稳定性、低延迟、远距离通信要求高的室内外无线通信场景,目标是构建高可靠、高安全、长距离的无线网络传输系统。; 阅读建议:本文档技术参数详实,建议结合具体项目需求重点查阅频段、功率、组网模式、防护等级及管理方式等内容,便于选型与部署。
内容概要:WiFiSupply斯普莱WFS7000-52AX5是一款高性能、高负载型工业级双射频无线AP基站,支持2.4G和5.8G双频段WiFi6(802.11ax)标准,采用OFDMA、MIMO 4T4R架构及射频合路技术,实现最大1974Mbps的双频合并带宽。设备具备29dBm高发射功率、-96dBm高接收灵敏度,支持Fast Roaming快速漫游(切换延迟≤30ms)、多链路聚合、主备链路备份、巨量安全隧道等核心技术,保障低延迟、零丢包的稳定通信。配备5个千兆网口(含1个2.5G口)、支持POE/DC/端子多种供电方式,具备IP54防护、-45~85℃宽温运行、防浪涌防静电等工业级设计,适用于复杂恶劣环境。支持胖瘦一体模式、云端/本地/图形化多方式管理,并提供API接口便于第三方平台集成。; 适合人群:工业自动化、智能制造、智慧物流等领域中从事无线网络部署与运维的工程师和技术人员,具备基本网络知识和工业通信需求的专业用户。; 使用场景及目标:①用于AMR/AGV/RGV小车、无人叉车、穿梭车、天车、堆垛机等移动设备的无线联网;②满足无人机遥控、车载、船载、火车视频传输、分拣机PLC控制等高移动性、高可靠性场景的无线桥接与覆盖需求;③实现工业4.0环境下大规模终端接入、无缝漫游、安全传输的无线网络建设。; 阅读建议:本文档技术参数详尽,建议结合实际部署场景重点关注设备的射频性能、漫游切换、供电安装方式及管理功能,以便充分发挥其在高负载、强干扰工业环境下的优势。

111,128

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧