httpwebrequest post php,c# – 使用HttpWebRequest使用multipart / form-data对数据进行POST /上传...

我试图使用ImageShack API来上传图像.要使用它,我应该使用multipart / form-data来打印图像.我这样做…

var postData = "";

var req = HttpWebRequest.Create("http://www.imageshack.us/upload_api.php");

req.Method = "POST";

req.ContentType = "multipart/form-data";

postData += "key=my_key_here&";

postData += "type=base64&";

// get base64 data from image

byte[] bytes = File.ReadAllBytes(@"D:\tmp\WpfApplication1\WpfApplication1\Images\Icon128.gif");

string encoded = Convert.ToBase64String(bytes);

postData += "fileupload=" + encoded;

byte[] reqData = Encoding.UTF8.GetBytes(postData);

using (Stream dataStream = req.GetRequestStream())

{

dataStream.Write(reqData, 0, reqData.Length);

}

var res = (HttpWebResponse)req.GetResponse();

var resStream = res.GetResponseStream();

var reader = new StreamReader(resStream);

string resString = reader.ReadToEnd();

txt1.Text = resString;

但ImageShack正在抱怨

Sorry, but we've detected that unexpected data is received. Required parameter 'fileupload' is missing or your post is not multipart/form-data

FileUpload存在,我正在使用multipart / form-data什么错误?

更新:

更新2

我看着另一个问题Multipart forms from C# client.修改我的代码边界,删除期望100标题仍然我不能得到它的工作…

ServicePointManager.Expect100Continue = false;

var boundary = "-----------------------------28520690214962";

var newLine = Environment.NewLine;

var propFormat = boundary + newLine +

"Content-Disposition: form-data; name=\"{0}\"" + newLine + newLine +

"{1}" + newLine + newLine;

var fileHeaderFormat = boundary + newLine +

"Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"" + newLine;

var req = (HttpWebRequest)HttpWebRequest.Create("http://jm/php/upload.php");

req.Method = WebRequestMethods.Http.Post;

req.ContentType = "multipart/form-data; boundary=" + boundary;

using (var reqStream = req.GetRequestStream()) {

var reqWriter = new StreamWriter(reqStream);

var tmp = string.Format(propFormat, "str1", "hello world");

reqWriter.Write(tmp);

tmp = string.Format(propFormat, "str2", "hello world 2");

reqWriter.Write(tmp);

reqWriter.Write(boundary + "--");

reqWriter.Flush();

}

var res = req.GetResponse();

using (var resStream = res.GetResponseStream()) {

var reader = new StreamReader(resStream);

txt1.Text = reader.ReadToEnd();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值