CURL到C#HttpWebRequest [英] CURL to C# HttpWebRequest

查看:439
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆