簡體   English   中英

HTTP 400錯誤請求錯誤C#

[英]HTTP 400 Bad Request Error C#

我遇到此錯誤:HTTP 400錯誤請求,可能是什么錯誤? 如何檢查API的參數是否正確?

我嘗試了在線建議的解決方案,但還是沒有運氣。 有人可以建議如何解決此問題嗎?

            string url = "/api/customers/reconnect/"; //sample url
            string parameters = new JavaScriptSerializer().Serialize(new { 
                accountNumber = info.accountNumber,
                serviceNumber = info.serviceNumber,
                lastName = info.lastName,
                processType = info.processType,
                reconnectReason = info.reconnectReason,
                priName = info.priName,
                requestDate = info.requestDate,
                Amount = info.amount,
                Email = info.email,
                priName2 = info.priName2,
                withReconnectFee = info.withreconnectFee,
                contactNo2 = info.contactNo2,
                stmtFaxNo = info.stmtFaxNo
            });

            HttpVerb method = HttpVerb.POST;

            var request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = method.ToString();
            request.ContentLength = 0;
            request.ContentType = ContentType;
            request.Accept = "application/json";


            var encoding = new UTF8Encoding();
            var bytes = encoding.GetBytes(parameters); //Encoding.GetEncoding("iso-8859-1").GetBytes(parameters);
            request.ContentLength = bytes.Length;
            using (var writeStream = request.GetRequestStream())
            {
                writeStream.Write(bytes, 0, bytes.Length);
                writeStream.Close();
            }              

            using (var response = (HttpWebResponse)request.GetResponse())
            {
                var responseValue = string.Empty;

                using (var responseStream = response.GetResponseStream())
                { 
                    if(responseStream != null)
                        using (var reader = new StreamReader(responseStream))
                        {
                            responseValue = reader.ReadToEnd();
                        }
                }

                if (response.StatusCode == HttpStatusCode.OK)
                {
                    var jsonVal = JObject.Parse(responseValue);
                    result = (string)jsonVal["result"].ToString();
                } 

每當您看到包含三位數字的HTTP狀態代碼的錯誤時,表明您能夠通過網絡發送請求並獲得響應。 狀態代碼實際上是由服務器提供的,而不是由.NET運行時或您身邊的任何東西引發的。 (在某些情況下,狀態碼實際上可能來自您與服務器之間的設備,例如負載平衡器或網關,但這通常不是問題。)

要了解此類錯誤,您必須了解服務器。 在這種情況下,即使您提供了HTTP協議所需的所有標頭,也可能遺漏了服務器認為是強制性的標頭。 服務器可能不喜歡正文的內容。 服務器可能有錯誤。 真的可以是任何東西...在服務器上。

我們無法基於c#客戶端代碼來解決此問題。 您需要聯系運行該服務的人員,並尋求他們的幫助。 他們可能能夠查看自己身邊的日志,以確定其服務器為何發布400狀態代碼。 或要求他們提供“已知良好”的請求消息示例(包括標題); 將其與您自己的消息進行比較,以查找可能導致問題的任何差異。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM