在C#中将请求标头传递给HttpWebRequest

时间:2016-02-19 15:09:59

标签: c# json get http-headers httprequest

我正在尝试创建一个HttpWebRequest并从中获取json数据。使用Postman,当我设置url,参数&标题,我能够得到json响应(请参阅this)。但是,当我尝试使用C#时,我没有得到任何回应。

我在Stackoverflow上搜索了几个帖子并按照步骤操作,但无法找到错误或者是否需要其他任何内容。

        string requestUrl = Constants.FLIPKART_INSTALLS_URL;
        requestUrl = requestUrl.Replace("##STARTDATE##", DateTime.Now.ToString("yyyy-MM-dd"));
        requestUrl = requestUrl.Replace("##ENDDATE##", DateTime.Now.ToString("yyyy-MM-dd"));

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestUrl);
        //request.Credentials = CredentialCache.DefaultCredentials;
        request.Method = "GET";
        //request.ContentType = "application/json";
        request.Headers["Fk-Affiliate-id"] = Constants.FLIPKART_AFFILIATE_ID;
        request.Headers["Fk-Affiliate-token"] = Constants.FLIPKART_AFFILIATE_TOKEN;
        WebResponse response = request.GetResponse();

This是我得到的回应。我不确定这是否真的是一个愚蠢的问题,但由于我不太了解C#,所以我发布了它。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

通过在响应对象上调用GetResponseStream(),我能够阅读内容,如果需要,请参考下面的代码:

using System;
using System.Net;
using System.Text;
using System.IO;

public class Test
{
    // Specify the URL to receive the request.
    public static void Main (string[] args)
    {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create (args[0]);

        // Set some reasonable limits on resources used by this request
        request.MaximumAutomaticRedirections = 4;
        request.MaximumResponseHeadersLength = 4;
        // Set credentials to use for this request.
        request.Credentials = CredentialCache.DefaultCredentials;
        HttpWebResponse response = (HttpWebResponse)request.GetResponse ();

        Console.WriteLine ("Content length is {0}", response.ContentLength);
        Console.WriteLine ("Content type is {0}", response.ContentType);

        // Get the stream associated with the response.
        Stream receiveStream = response.GetResponseStream ();

        // Pipes the stream to a higher level stream reader with the required encoding format. 
        StreamReader readStream = new StreamReader (receiveStream, Encoding.UTF8);

        Console.WriteLine ("Response stream received.");
        Console.WriteLine (readStream.ReadToEnd ());
        response.Close ();
        readStream.Close ();
    }
}
相关问题