【问题标题】:CURL to C# HttpWebRequestCURL 到 C# HttpWebRequest
【发布时间】:2013-12-01 18:32:51
【问题描述】:

我需要帮助将 PHP 的 CURL 转换为 C# HttpWebRequest。我的 c# 代码运行不正常,请求一直加载并以超时异常结束。这是我的 PHP 代码:

    $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();

我希望有人可以帮助我。提前致谢。

【问题讨论】:

  • 你试过什么?你不明白什么?你读过文档吗?
  • 基本上我的 c# 代码没有返回任何东西。
  • 使用HttpClient;比WebRequest好多了。
  • 所以您问我们为什么您的 C# 代码无法正常工作,却没有告诉我们您编写的代码的任何信息?
  • 对不起,添加了我的代码。

标签: c# php curl


【解决方案1】:

您需要从网络服务器读取响应流。
使用response.GetResponseStream() 函数。

如果响应包含 Unicode 文本,您可以使用 StreamReader 读取该文本。

【讨论】:

    猜你喜欢
    • 2019-02-16
    • 2019-01-17
    • 1970-01-01
    • 1970-01-01
    • 2013-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多