所以我正在努力学习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 { }
}
}