【问题标题】:How can i add DataID and password in an HTTP header?如何在 HTTP 标头中添加 DataID 和密码?
【发布时间】:2012-03-23 05:27:40
【问题描述】:

如何在 HTTP 标头中添加 DataID 和密码。如下图所示?

POST /serviceCall/ HTTP/1.1
托管我的主机
内容长度 459
来源 chrome-extension://cokgbflfommojglbmbpenpphppikmonn
DataID 25
密码 t123456
用户代理 Mozilla/5.0
内容类型应用程序/json
接受 /
接受编码 gzip,deflate,sdch
Accept-Language en-US,en;q=0.8
接受字符集 ISO-8859-1,utf-8;q=0.7,*;q=0.3

我已尝试以多种方式添加

s_requestPath  = "http://myServiceCall_URL";
WebRequest s_request = WebRequest.Create(s_requestPath);

// 1st try

            WebHeaderCollection myWebHeaderCollection = s_request.Headers;
            myWebHeaderCollection.Add("DataID", dataID);
            myWebHeaderCollection.Add("Password", registerViewModel.ConfirmPassword);

//2nd try
            //s_request.Credentials = new NetworkCredential( dataID , registerViewModel.ConfirmPassword);

//3rd try
            //s_request.Headers.Add(" DataID :" +  dataID + ";");
            //s_request.Headers.Add("Password:" + registerViewModel.ConfirmPassword + ";");

//4th try
            //s_request.Headers.Add(" DataID ",  dataID + ";");
            //s_request.Headers.Add("Password", registerViewModel.ConfirmPassword + ";");


            using (StreamWriter s_writer = new StreamWriter(s_request.GetRequestStream()))
            {
                s_writer.Write(s_RegJson);    //s_RegJson is json obeject that i am sending
            }
            string rtnJson = "";

            using (WebResponse s_response = s_request.GetResponse())
            {

                using (Stream s_stream = s_response.GetResponseStream())
                {
                    using (StreamReader r_reader = new StreamReader(s_stream))
                    {
                        while (!r_reader.EndOfStream)
                        {
                             rtnJson  += r_reader.ReadLine();
                        }
                    }
                }
            }

【问题讨论】:

    标签: .net asp.net-mvc-3 http c#-4.0 header


    【解决方案1】:

    您似乎没有发送 application/json 请求标头。试试这样:

    var url = "http://myServiceCall_URL";
    var serializer = new JavaScriptSerializer();
    var request = WebRequest.Create(url);
    request.Method = "POST";
    request.ContentType = "application/json";
    request.Headers["DataID"] = "25";
    request.Headers["Password"] = "t123456";
    var requestJson = serializer.Serialize(new
    {
        Foo = "bar"
    });
    request.ContentLength = requestJson.Length;
    
    using (var stream = request.GetRequestStream())
    using (var writer = new StreamWriter(stream))
    {
        writer.Write(requestJson);
    }
    
    using (var response = request.GetResponse())
    using (var stream = response.GetResponseStream())
    using (var reader = new StreamReader(stream))
    {
        var responseJson = reader.ReadToEnd();
        var responseObj = serializer.DeserializeObject(responseJson);
        // do something with the response
    }
    

    【讨论】:

    • 我试过这个,但我的标题如下所示: Headers = {Content-Type: application/json DataID: 63 Password: test123} 我得到异常 INSERT 语句与 FOREIGN KEY 约束冲突跨度>
    • 达林,我也试过你的代码,但请求头和以前一样。
    • @seUser,你得到的异常,是不是和一些服务器端的问题有关?您似乎提到了一些 INSERT 语句和外键。这和客户有什么关系?
    • 是的,我已将此情况报告给 DBA 人员。感谢您的所有帮助。
    • 嗨,Darin,我该怎么办,如果我必须发出 GET 请求,比如myHost/Player/plays{PlayID},那我该怎么办?
    猜你喜欢
    • 2018-07-03
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    • 2019-05-11
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    • 1970-01-01
    相关资源
    最近更新 更多