簡體   English   中英

遠程服務器返回錯誤:(400)錯誤的請求。 當嘗試在asp.net中使用Facebook登錄時

[英]The remote server returned an error: (400) Bad Request. When try to login with facebook in asp.net

我嘗試用我的網站中具有Facebook帳戶的用戶登錄,但是該應用程序給我以下錯誤:遠程服務器返回錯誤:(400)錯誤的請求。

下面是我的代碼:

public string WebRequest(Method method, string url, string postData)
{

    HttpWebRequest webRequest = null;
    StreamWriter requestWriter = null;
    string responseData = "";    

    webRequest = System.Net.WebRequest.Create(url) as HttpWebRequest;
    webRequest.Method = method.ToString();
    webRequest.ServicePoint.Expect100Continue = false;
    webRequest.UserAgent = "[You user agent]";
    webRequest.Timeout = 50000;


    if (method == Method.POST)
    {
        webRequest.ContentType = "application/x-www-form-urlencoded";

        //POST the data.
        requestWriter = new StreamWriter(webRequest.GetRequestStream());

        try
        {
            requestWriter.Write(postData);
        }
        catch
        {
            throw;
        }

        finally
        {
            requestWriter.Close();
            requestWriter = null;
        }
    }

    responseData = WebResponseGet(webRequest);
    webRequest = null;
    return responseData;
}

* 這種方法給我錯誤: *

 public string WebResponseGet(HttpWebRequest webRequest)
{
    StreamReader responseReader = null;
    string responseData = "";

    try
    {
        responseReader = new      StreamReader(webRequest.GetResponse().GetResponseStream());
        responseData = responseReader.ReadToEnd();
    }
    catch
    {
        throw;
    }
    finally
    {
        webRequest.GetResponse().GetResponseStream().Close();
        responseReader.Close();
        responseReader = null;
    }

    return responseData;
}

自從Iv's與webRequest一起玩以來已經有一段時間了,但是我認為您的問題可能是

webRequest.GetResponse().GetResponseStream().Close(); 

在最后一塊。 既然你已經打過電話

webRequest.GetResponse().GetResponseStream()

在try塊的主體中​​。 文檔狀態:

GetResponse方法將請求發送到Internet資源,並返回WebResponse實例。 如果已經通過調用GetRequestStream發起了請求,則GetResponse方法將完成請求並返回任何響應。

因此,當我閱讀它時,響應已經在try塊中返回了,然后當您在finally塊中再次調用它時,它失敗了……因為它已經被檢索到了。 只需注釋掉那條線,然后查看您的進展即可。 當您關閉StreamReader時,應關閉其基礎連接。

因此,請嘗試:

public string WebResponseGet(HttpWebRequest webRequest)
{
    StreamReader responseReader = null;
    string responseData = "";

    try
    {
        responseReader = new StreamReader(webRequest.GetResponse().GetResponseStream());
        responseData = responseReader.ReadToEnd();
    }
    catch
    {
        throw;
    }
    finally
    {
        responseReader.Close();
    }

    return responseData;
}

暫無
暫無

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

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