您的位置:首页 > 理论基础 > 计算机网络

C# 发送文件(Http Post),带其他参数

2015-02-21 09:26 309 查看
除了发送的文件主体之外,还能附加一些其他参数,例如本例中xml文件是主体,然后另外加了一个dataFormat参数,值为hk,其他参数以此类推。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;

namespace SendXml
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
FileStream fs = new FileStream("C:/dog.xml", FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(fs);
sr.BaseStream.Seek(0, SeekOrigin.Begin);
string xmlContent = "";
string str = sr.ReadLine();
while(str != null){
Console.WriteLine(str);
xmlContent = xmlContent += str;
xmlContent += "\r\n ";
str = sr.ReadLine();
}

sr.Close();
fs.Close();

string boundary = "Boundary-b1ed-4060-99b9-fca7ff59c113"; //Could be any string
string Enter = "\r\n";

//part 1
string part1 = "--" + boundary + Enter
+ "Content-Type: application/octet-stream" + Enter
+ "Content-Disposition: form-data; filename=\"" + "dog.xml" + "\"; name=\"file\"" + Enter + Enter;
//part 2
string part2 = Enter
+ "--" + boundary + Enter
+ "Content-Type: text/plain" + Enter
+ "Content-Disposition: form-data; name=\"dataFormat\"" + Enter + Enter
+ "hk" + Enter
+ "--" + boundary + "--";

string postDataStr = part1 + xmlContent + part2;
textBox1.Text = postDataStr;

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost/fshz_service/api/hk/receiveXMLResult");
request.Method = "POST";
request.ContentType = "multipart/form-data;boundary=" + boundary;
//request.ContentLength = Encoding.UTF8.GetByteCount(postDataStr);
label1.Text = Encoding.UTF8.GetByteCount(postDataStr) + "";

Stream myRequestStream = request.GetRequestStream();
StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("UTF-8"));

myStreamWriter.Write(postDataStr);

myStreamWriter.Close();

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
string retString = myStreamReader.ReadToEnd();
textBox2.Text = retString;

myStreamReader.Close();
myResponseStream.Close();

}
}
}
哈哈,目标是把Java、C#、VB、C++、C、Python等常见语言中的HTTP POST 发送XML文件的功能分别实现一遍,目前为止前三种已经实现。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: