C#调用微博api发送带图片微博,模拟http请求

public void SendWeibo( )
{

try
{
StringBuilder data = new StringBuilder();

string url = "https://api.weibo.com/2/statuses/upload.json";//发送带图片的接口
string t_news = "测试微博--今天天气不错"; //微博
string source = "123456"; //申请得来的微博App Key
string access_token = "123456Y5fE"; //申请得来的微博Access Token:

data.Append("source =" + source);
data.Append("&access_token =" + access_token);
data.Append("&&status= =" + System.Web.HttpUtility.UrlEncode(t_news));
string filepath = @"C:\Users\Administrator\Desktop\Image\test.png";

Weibo a = new Weibo();
a.HttpUploadFile(url, data.ToString (), "file", filepath, "test.png");
}
catch (Exception ex)
{
}
}
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Web;

namespace WebWeiboTest
{
    public class Weibo
    {
        /// <summary>
        /// 上传图片文件
        /// </summary>
        /// <param name="url">提交的地址</param>
        /// <param name="poststr">发送的文本串   比如:user=eking&pass=123456  </param>
        /// <param name="fileformname">文本域的名称  比如:name="file",那么fileformname=file  </param>
        /// <param name="filepath">上传的文件路径  比如: c:\12.jpg </param>
        /// <param name="filename">图片名字</param>
        /// <returns></returns>
        public string HttpUploadFile(string url, string poststr, string fileformname, string filepath, string filename)
        {
            try
            {

                // 这个可以是改变的,也可以是下面这个固定的字符串
                string boundary = "---------------------------7803363818269";

                // 创建request对象
                HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(url);
                webrequest.ContentType = "multipart/form-data; boundary=" + boundary;
                webrequest.Method = "POST";

                // 构造发送数据
                StringBuilder sb = new StringBuilder();

                // 文本域的数据,将user=eking&pass=123456  格式的文本域拆分 ,然后构造
                foreach (string c in poststr.Split(‘&‘))
                {
                    string[] item = c.Split(‘=‘);
                    if (item.Length != 2)
                    {
                        break;
                    }
                    string name = item[0];
                    string value = item[1];
                    sb.Append("--" + boundary);
                    sb.Append("\r\n");
                    sb.Append("Content-Disposition: form-data; name=\"" + name + "\"");
                    sb.Append("\r\n\r\n");
                    sb.Append(value);
                    sb.Append("\r\n");
                }

                // 文件域的数据
                sb.Append("--" + boundary);
                sb.Append("\r\n");
                sb.Append("Content-Disposition: form-data; name=\"pic\";filename="+filename);
                sb.Append("\r\n");

                sb.Append("Content-Type: image/png");
                sb.Append("\r\n\r\n");

                string postHeader = sb.ToString();
                byte[] postHeaderBytes = Encoding.UTF8.GetBytes(postHeader);

                //构造尾部数据
                byte[] boundaryBytes = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");

                FileStream fileStream = new FileStream(filepath, FileMode.Open, FileAccess.Read);

                long length = postHeaderBytes.Length + fileStream.Length + boundaryBytes.Length;
                webrequest.ContentLength = length;

                Stream requestStream = webrequest.GetRequestStream();

                // 输入头部数据
                requestStream.Write(postHeaderBytes, 0, postHeaderBytes.Length);

                // 输入文件流数据
                byte[] buffer = new Byte[checked((uint)Math.Min(4096, (int)fileStream.Length))];
                int bytesRead = 0;
                while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
                    requestStream.Write(buffer, 0, bytesRead);

                // 输入尾部数据
                requestStream.Write(boundaryBytes, 0, boundaryBytes.Length);
                WebResponse responce = webrequest.GetResponse();
                Stream s = responce.GetResponseStream();
                StreamReader sr = new StreamReader(s);
                return sr.ReadToEnd();

            }
            catch (Exception ex)
            {
                return "";
            }
            // 返回数据流(源码) 

        }
    }
}

  

时间: 2024-11-10 08:06:06

C#调用微博api发送带图片微博,模拟http请求的相关文章

[Java] JavaMail 发送带图片的 html 格式的邮件

JavaMail 发送的邮件正文和附件是相互独立的,但是内置图片需要定位图片在正文中的位置,所以内置图片和邮件正文是互相依赖的. 发送带附件的邮件可参考JavaMail 发送 html 格式.带附件的邮件. 发送纯文本的邮件可参照 JavaMail 简单案例. 具体例子 EmailHelper, Email 的帮助类,向帮助类提供 SMTP 服务器域名.用户名.密码.发送人邮箱.收件人邮箱.邮件主题.html 格式的内容.图片的路径,便可发送一份内置图片的邮件.在创建 MimeMultipart

zabbix发送带图片的微信告警

zabbix发送带有图片的微信告警 2.1 实现思路 2.2 准备环境 脚本是使用python脚本,运行环境为python 2.7.5 依赖库提前安装:requests 2.3 ×××tid,secret 这部分内容,可以查看前面不带图的文章有详细描述 2.4 脚本实现 #!/usr/bin/python #coding=utf-8 _author__ = 'zhangdongdong' import requests, json import urllib3 import smtplib,sy

asp.net后台集成QQ第三方接口含发送微博、带图片微博(有源码)

最近在做项目的时候用到了QQ第三方接口,腾讯提供了JS.安卓.IOS.php的SDK,但是没有C#的SDK.一开始我是在前台直接用JS的SDK做登陆验证,但是做完自己就感觉这样很可笑,JS是暴露给客户端的,那么客户完全可以直接绕过去,进入到你的后台. 所以我在通过登陆验证后回调后台页面,在后台进行合法性验证,防止非法登陆. 原理就是后台通过httpwebrequest操作第三方接口 /// <summary> /// HTTP POST方式请求数据 /// </summary> /

Android 调用系统Email发送带多附件的邮件

转自:http://www.open-open.com/lib/view/open1347005126912.html 众所周知,在Android中调用其他程序进行相关处理,都是使用的Intent.当然,Email也不例外. 在Android中,调用Email有三种类型的Intent: Intent.ACTION_SENDTO  无附件的发送 Intent.ACTION_SEND  带附件的发送 Intent.ACTION_SEND_MULTIPLE  带有多附件的发送 当然,所谓的调用Emai

zabbix 发送带图片的报警信息到微信

过程比较复杂 先用curl到报警对于itemid的图片 将图片上传到微信企业号 去的微信的mediaid 在发送给客户端.代码还在整理中

使用Mail::Sender发送带图片的html邮件

需要指出的一定要保持编码的一致,否则会导致要么html乱码,或者主题乱码.如果有多个图片,可以采用多个Attach,html调用的图片名称为Attach中定义的. 效果图: #!/usr/bin/perl use strict; use warnings; use Config::Tiny; use FindBin; use Mail::Sender; my $configFile = "$FindBin::Bin/config.ini"; my $configNew = Config

python之简单邮件发送(带图片)

#!/usr/bin/env python #coding: utf-8 by guozheng_li #该脚本是以图片作为内容发送的,没加入该说明前测试是正常可用的. import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.image import MIMEImage  mailto_list=['[email prote

调用企业号API发送消息

个人zabbix报警使用 写的比较简单 默认会发消息到第一个部门 感兴趣的可以自己查阅api文档修改下 很简单  附上代码 #!/usr/bin/env python # -*- coding: utf-8 -*- """ author = 'Perling' time = '2016/11/21' """ import sys reload(sys) sys.setdefaultencoding('utf8') import urllib2 i

Java调用 新浪微博API 接口发微博,逐条讲解,绝对清晰

最近要做个课程设计,使用微博控制树莓派,树莓派再控制发光二极管的亮和灭,主要设计分两层,上层是用Java调用新浪微博API来实现对微博旳监听,当我的微博被回复时能够自动读取评论内容,并根据评论的指令内容来决定树莓派的控制动作.下层是用C语言调用操作系统底层接口来实现用树莓派GPIO接口控制发光二极管的闪烁.亮灭. 由于网上教程都很老了,最近微博接口发生了很多变化,所以我决定全新写一篇详细的博文,如若能对您起到帮助作用,那将是我莫大的荣幸.同时我非常希望能与您交流,有问题请在评论里回复我. 本文将