Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有一个流行的C#库用于处理HTTP?例如简化使用httpwebrequest等_C#_Http_File Upload_Httpwebrequest - Fatal编程技术网

是否有一个流行的C#库用于处理HTTP?例如简化使用httpwebrequest等

是否有一个流行的C#库用于处理HTTP?例如简化使用httpwebrequest等,c#,http,file-upload,httpwebrequest,C#,Http,File Upload,Httpwebrequest,是否有一个流行的C#库用于处理HTTP?例如简化使用httpwebrequest等 例如,使用一些参数进行http文件上载需要很多行以及http协议内容格式等方面的知识。WebClient本身不这样做 那么,作为一个新手,这里是否有一个c#开发者使用的众所周知的库 谢谢您是在寻找Ajax库、文件上载控件还是两者都有,或者两者都没有?查看AjaxToolkit。请查看: 您可能也会感兴趣。WebClient将这样做。比如: var c = new System.Net.WebClient

是否有一个流行的C#库用于处理HTTP?例如简化使用httpwebrequest等

例如,使用一些参数进行http文件上载需要很多行以及http协议内容格式等方面的知识。WebClient本身不这样做

那么,作为一个新手,这里是否有一个c#开发者使用的众所周知的库


谢谢

您是在寻找Ajax库、文件上载控件还是两者都有,或者两者都没有?查看AjaxToolkit。

请查看:

您可能也会感兴趣。

WebClient这样做。比如:

var c = new System.Net.WebClient();    
c.UploadFile(url, filename);

如果这还不够,请更具体一些。“参数”是什么意思?

Web表单以两种格式之一提交:application/x-www-form-urlencoded和multipart/form data

提供了一种非常简单方便的方式将任何类型的数据上载到网站。对于application/x-www-form-urlencoded,您所要做的就是提供一个。对于多部分/表单数据,AFAIK,您必须自己创建请求数据(可能包括文件和名称-值对)


应用程序/x-www-form-urlencoded

NameValueCollection formData = new NameValueCollection();
formData["q"] = "c# webclient post urlencoded";
formData["btnG"] = "Google Search";
formData["hl"] = "en";

WebClient myWebClient = new WebClient();
myWebClient.UploadValues(uriString, formData);
将HTTP方法设置为
“POST”
,将内容类型设置为
“application/x-www-form-urlencoded”
,URL编码
formData
,并将其上载到指定的
uriString


多部分/表单数据

string formData = @"--AaB03x
Content-Disposition: form-data; name=""submit-name""

Larry
--AaB03x
Content-Disposition: form-data; name=""files""; filename=""file1.dat""
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64

" + Convert.ToBase64String(
  File.ReadAllBytes("file1.dat"), Base64FormattingOptions.InsertLineBreaks) + @"
--AaB03x--
";

WebClient myWebClient = new WebClient();
myWebClient.Encoding = Encoding.ASCII;
myWebClient.Headers.Add("Content-Type", "multipart/form-data; boundary=AaB03x");
myWebClient.UploadString(uriString, formData);
这会将内容类型设置为“多部分/表单数据”,并在请求数据中使用边界。 将HTTP方法设置为
“POST”
,并将字节数组上载到
uriString
。 本例中的请求数据包含一个文件
file1.dat
和一个设置为
Larry
的表单参数
submit name

格式如所述。

这是迄今为止我能确定的最佳答案:

我发现这和我想的很接近。这解决了我的具体需求,但在方法方面似乎并不太宽泛。也许这些只是基本WebClient/HttpWebRequest类支持之上/之外所需的主要帮助器方法?无论如何,如果有人知道一个流行的c#HTTP库比这个更为人所知,请告诉我。目前为止,这个链接是我能找到的最能回答我问题的链接。感谢迄今为止的所有评论。

Chilkat组件


更多的是一个著名/流行的http utils库,因此我想对您的问题说,概述词表明它是“AsyncFileUpload是ASP.NET AJAX控件”-因此在本例中,我猜它不是一个真正的独立库,可以用于WinForms开发?WinForms?我想你是说asp.net?你在标题中提到了HTTP和httpwebrequest?AjaxToolkit与.Net配合使用,因此在这方面它不是“独立的”。但是你不需要其他任何东西来使用它。对不起,如果我不清楚的话-我正在使用一个WinForms应用程序,需要通过HTTP后端web应用程序进行调用-所以这就是为什么我需要一个独立的库(即不是ASP.net控件)-可能没有使用最好的术语OK,我的错。但这并不适用。不过,这里的其他一些建议应该对您有用。关于htlm agility pack,它似乎更关注基于快速浏览的HTML和DOM操作,而不是http UTIL?您对
WebClient
有什么问题?这将很难比这更简单并且仍然有用。请参阅我的其他评论,但具体来说是一篇既有文件上传又包含一些帖子参数的帖子(例如本例中的一次性身份验证令牌)嗯…我需要上传文件的具体案例如何,但是在同一篇文章中,我需要包含一些表单参数?WebClient能处理这个问题吗?感谢多部分/表单数据是您的朋友。谢谢-现在知道这一点很好。我想回到我的问题上来,是否有一个流行的库可以像这样封装http函数?在这种情况下,您只需传递文件名和键值对…PS。下面是我找到的一个链接,它与我的想法非常接近()。这解决了我的具体需求,但在方法方面似乎并不太宽泛。也许这些只是基本WebClient/HttpWebRequest类支持之上/之外所需的主要帮助器方法?无论如何,如果有人知道一个流行的c#HTTP库比这个更为人所知,请告诉我。目前为止,这个链接是我能找到的最能回答我问题的链接。感谢您迄今为止的所有评论。PSS。下面是关于如何使用帮助程序的链接:Henk,WebLinet()是否支持使用SSL的HTTPS?就像我想要ServicePointManager.ServerCertificateValidationCallback+=new System.Net.Security.RemoteCertificateValidationCallback(ValidateServerCertificate);
Chilkat.HttpRequest req = new Chilkat.HttpRequest();
Chilkat.Http http = new Chilkat.Http();

bool success;

//  Any string unlocks the component for the 1st 30-days.
success = http.UnlockComponent("Anything for 30-day trial");
if (success != true) {
    MessageBox.Show(http.LastErrorText);
    return;
}

//  Build an HTTP POST Request:
req.UsePost();
req.Path = "/testPostHandler.asp";
req.AddParam("arg1","This is the value for arg1.");
req.AddParam("arg2","This is the value for arg2.");
req.AddParam("arg3","This is the value for arg3.");

//  Send the HTTP POST and get the response.  Note: This is a blocking call.
//  The method does not return until the full HTTP response is received.
string domain;
int port;
bool ssl;
domain = "www.chilkatsoft.com";
port = 80;
ssl = false;
Chilkat.HttpResponse resp = null;
resp = http.SynchronousRequest(domain,port,ssl,req);
if (resp == null ) {
    textBox1.Text += http.LastErrorText + "\r\n";
}
else {
    //  Display the HTML page returned.
    textBox1.Text += resp.BodyStr + "\r\n";
}