CURL到C#HttpWebRequest [英] CURL to C# HttpWebRequest
本文介绍了CURL到C#HttpWebRequest的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要帮助将PHP的CURL转换为C#HttpWebRequest。我的c#代码不能正常工作,请求加载所有时间结束与超时异常。这是我的PHP代码:
I need help with converting PHP's CURL to C# HttpWebRequest. My c# code doesn't work well, the request loads all the time ending with timeout exception. Here is my PHP code:
$curl = curl_init();
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_URL, 'https://api.example.com/');
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Origin: http://media.example.com/',
'Accept-Encoding: gzip,deflate,sdch',
'Host: api.example.com',
'Accept-Language: en-US,en;q=0.8',
'Authorization: FD 08306ECE-C36C-4939-B65F-4225F37BD296:905664F40E29B95CF5810B2ACA85497C7430BB1498E74B52',
'Content-Type: application/json',
'Accept: */*',
'Referer: http://example.com',
'User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36',
'Connection: keep-alive'
)
);
curl_setopt($curl, CURLOPT_POSTFIELDS, '{"language":"en","original_text":"' . $text . '","product":"pen"}' . chr(10));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($curl);
curl_close($curl);
这里是我的c#代码:
var request = WebRequest.Create("https://api.example.com/social/autocomplete/v2/search/messages") as HttpWebRequest; ;
request.ContentType = "application/json";
request.Method = "POST";
request.Headers["Origin"] = "http://media.example.com";
request.Headers["Accept-Encoding"] = "gzip,deflate,sdch";
//request.Headers["Host"] = "api.example.com"
request.Host = "api.example.com";
request.Headers["Accept-Language"] = "en-US,en;q=0.8";
request.Headers["Authorization"] = "FD 08306ECE-C36C-4939-B65F-4225F37BD296:905664F40E29B95CF5810B2ACA85497C7430BB1498E74B52";
request.ContentType = "application/json";
request.Accept = "*/*";
request.Referer = "http://example.com/";
request.UserAgent = "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36";
request.KeepAlive = true;
byte[] buffer = Encoding.UTF8.GetBytes("{\"language\":\"en\",\"original_text\":\"hello\",\"product\":\"pen\"}");
string result = System.Convert.ToBase64String(buffer);
Stream reqstr = request.GetRequestStream();
reqstr.Write(buffer, 0, buffer.Length);
reqstr.Close();
WebResponse response = request.GetResponse();
Console.WriteLine(response.ToString());
Console.ReadKey();
我希望有人能帮助我。提前感谢。
I hope someone can help me. Thanks in advance.
推荐答案
您需要从网络服务器读取响应流。
使用 response.GetResponseStream()
函数。
You need to read the response stream from the web server.
Use the response.GetResponseStream()
function.
如果响应包含Unicode文本, code> StreamReader 。
If the response contains Unicode text, you can read that text using a StreamReader
.
这篇关于CURL到C#HttpWebRequest的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文