为什么我没有收到网络请求的回复?

时间:2017-05-06 15:32:21

标签: c# .net http-post httpwebrequest httpwebresponse

所以我正在努力学习WebRequest& WebResponse有效。 到目前为止,它似乎有点像你创建一个TcpClient和监听器,并使它们连接,然后在它们之间发送一个缓冲区。

然而,这似乎有点不同。 所以我在这里做的是我向网站提出请求,在这种情况下Spotify(我想尝试登录以作为我的第一个项目)。

使用POST方法将数据发布到网站。

将我的字符串转换为byteArray

更改内容类型(不确定我是否在这里做,不是100%确定值是什么)

,内容的长度是byteArray的长度

我创建了一个数据流,我将从请求中获取流。

然后我继续写入byteArray,从0的偏移开始,然后是我要写的东西的长度。

然后关闭dataStream。

现在我创建一个WebResponse(它会得到响应告诉我一切是否正常(我假设))

然后我打印出状态描述(它不打印任何东西,这里不确定为什么)

然后我创建一个包含服务器内容的流

然后我创建了一个读取内容的流读取器..

其余的很直接。

问题 所以问题是它没有打印出任何东西到控制台,我不知道为什么。如何打印出来?

错误

所以我抓住了异常,这就是img etting

  

“远程服务器返回错误:< 405>方法不允许。”

CODE

class Program
{
    static void Main(string[] args)
    {
        Console.Title = "Login Test";
        Console.ForegroundColor = ConsoleColor.Green;
        tester();
        Console.ReadLine();

    }

    private static void tester()
    {
        try
        {
            // Create a request using a URL that can receive a post.   
            WebRequest request = WebRequest.Create("https://accounts.spotify.com/en-SK/login");
            // Set the Method property of the request to POST.  
            request.Method = "POST";
            // Create POST data and convert it to a byte array.  
            string postData = "This is a test that posts this string to a Web server.";
            byte[] byteArray = Encoding.UTF8.GetBytes(postData);
            // Set the ContentType property of the WebRequest.  
            request.ContentType = "application/x-www-form-urlencoded";
            // Set the ContentLength property of the WebRequest.  
            request.ContentLength = byteArray.Length;
            // Get the request stream.  
            Stream dataStream = request.GetRequestStream();
            // Write the data to the request stream.  
            dataStream.Write(byteArray, 0, byteArray.Length);
            // Close the Stream object.  
            dataStream.Close();
            // Get the response.  
            WebResponse response = request.GetResponse();
            // Display the status.  
            Console.WriteLine(((HttpWebResponse)response).StatusDescription);
            // Get the stream containing content returned by the server.  
            dataStream = response.GetResponseStream();
            // Open the stream using a StreamReader for easy access.  
            StreamReader reader = new StreamReader(dataStream);
            // Read the content.  
            string responseFromServer = reader.ReadToEnd();
            // Display the content.  
            Console.WriteLine(responseFromServer);
            // Clean up the streams.  
            reader.Close();
            dataStream.Close();
            response.Close();
        }
        catch { }
    }
}

0 个答案:

没有答案