Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.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
.NETC#使用类似于Curl脚本的HTTPrequest_C#_.net_Curl_Httprequest - Fatal编程技术网

.NETC#使用类似于Curl脚本的HTTPrequest

.NETC#使用类似于Curl脚本的HTTPrequest,c#,.net,curl,httprequest,C#,.net,Curl,Httprequest,我正在使用.NET C#,并希望使用HTTPrequest以与Curl相同的方式撰写文章: curl --header ’Accept: text/html’ --user ’test1:password’ --Form ’wait=0’ --Form ’data=@data.csv;type=text/csv’ some URL address here 我从Internet服务器收到错误500内部错误 要发送的数据是CSV文件 我的C#源代码: 我做错了什么?表单帖子不需要对数据进行URL

我正在使用.NET C#,并希望使用
HTTPrequest
以与Curl相同的方式撰写文章:

curl
--header ’Accept: text/html’
--user ’test1:password’
--Form ’wait=0’
--Form ’data=@data.csv;type=text/csv’
some URL address here
我从Internet服务器收到
错误500内部错误

要发送的数据是CSV文件

我的C#源代码:


我做错了什么?

表单帖子不需要对数据进行URL编码吗

表单帖子不需要对数据进行URL编码吗

cURL使用multipart/form数据内容类型创建其请求。我认为这在您的情况下是必需的,因为您同时传递一个文本参数和一个文件。遗憾的是,.Net framework似乎没有内置对创建此内容类型的支持

有一个关于的问题,这里给出了如何自己完成的示例代码:

作为参考,该cURL命令生成的HTTP请求如下所示:

POST http://www.example.com/example HTTP/1.1
Authorization: Basic J3Rlc3Q6cGFzc3dvcmQn
User-Agent: curl/7.33.0
Host: www.example.com
Accept: text/html
Connection: Keep-Alive
Content-Length: 335
Expect: 100-continue
Content-Type: multipart/form-data; boundary=------------------------99aa46d554951aa6

--------------------------99aa46d554951aa6
Content-Disposition: form-data; name="'wait"

0'
--------------------------99aa46d554951aa6
Content-Disposition: form-data; name="'data"; filename="data.csv"
Content-Type: text/csv'

Time, A, B\n20120101, 100, 24\n20120102\n, 101, 27 

--------------------------99aa46d554951aa6--

cURL使用multipart/form数据内容类型创建其请求。我认为这在您的情况下是必需的,因为您同时传递一个文本参数和一个文件。遗憾的是,.Net framework似乎没有内置对创建此内容类型的支持

有一个关于的问题,这里给出了如何自己完成的示例代码:

作为参考,该cURL命令生成的HTTP请求如下所示:

POST http://www.example.com/example HTTP/1.1
Authorization: Basic J3Rlc3Q6cGFzc3dvcmQn
User-Agent: curl/7.33.0
Host: www.example.com
Accept: text/html
Connection: Keep-Alive
Content-Length: 335
Expect: 100-continue
Content-Type: multipart/form-data; boundary=------------------------99aa46d554951aa6

--------------------------99aa46d554951aa6
Content-Disposition: form-data; name="'wait"

0'
--------------------------99aa46d554951aa6
Content-Disposition: form-data; name="'data"; filename="data.csv"
Content-Type: text/csv'

Time, A, B\n20120101, 100, 24\n20120102\n, 101, 27 

--------------------------99aa46d554951aa6--

当内容类型设置为
application/x-www-form-urlencoded
时,它的格式通常与
GET
请求的格式相同。另一个选项是
multipart/formdata
,我对此不太确定。当然,最好的方法是查看两者生成的请求,看看它们之间有什么不同……不知道您的请求是否正常,但500代码意味着服务器遇到错误,而不是错误请求导致的错误。如果查看引发的异常,您将看到其上的响应流。查看一下内容,服务器可能已经为您提供了一些更有用的错误详细信息。curl命令创建了一个多部分/表单数据请求。当内容类型设置为
application/x-www-form-urlencoded
时,它的格式通常与
GET
请求的格式相同。另一个选项是
multipart/formdata
,我对此不太确定。当然,最好的方法是查看两者生成的请求,看看它们之间有什么不同……不知道您的请求是否正常,但500代码意味着服务器遇到错误,而不是错误请求导致的错误。如果查看引发的异常,您将看到其上的响应流。看一下内容,服务器可能已经为您提供了一些更有用的错误详细信息。curl命令创建了一个多部分/表单数据请求。curl请求创建了一个多部分/表单数据类型的请求。因此,我认为它需要mime编码。给定的curl请求创建了一个multipart/formdata类型的请求。因此,我认为它需要mime编码。