ฉันมีปัญหาที่คล้ายกันเมื่อพยายามเชื่อมต่อกับบริการ OAuth2 ของ Google
ฉันลงเอยด้วยการเขียน POST ด้วยตนเองไม่ได้ใช้ WebRequest เช่นนี้:
TcpClient client = new TcpClient("accounts.google.com", 443);
Stream netStream = client.GetStream();
SslStream sslStream = new SslStream(netStream);
sslStream.AuthenticateAsClient("accounts.google.com");
{
byte[] contentAsBytes = Encoding.ASCII.GetBytes(content.ToString());
StringBuilder msg = new StringBuilder();
msg.AppendLine("POST /o/oauth2/token HTTP/1.1");
msg.AppendLine("Host: accounts.google.com");
msg.AppendLine("Content-Type: application/x-www-form-urlencoded");
msg.AppendLine("Content-Length: " + contentAsBytes.Length.ToString());
msg.AppendLine("");
Debug.WriteLine("Request");
Debug.WriteLine(msg.ToString());
Debug.WriteLine(content.ToString());
byte[] headerAsBytes = Encoding.ASCII.GetBytes(msg.ToString());
sslStream.Write(headerAsBytes);
sslStream.Write(contentAsBytes);
}
Debug.WriteLine("Response");
StreamReader reader = new StreamReader(sslStream);
while (true)
{ // Print the response line by line to the debug stream for inspection.
string line = reader.ReadLine();
if (line == null) break;
Debug.WriteLine(line);
}
การตอบกลับที่เขียนไปยังสตรีมการตอบกลับจะมีข้อความแสดงข้อผิดพลาดเฉพาะที่คุณต้องการ
โดยเฉพาะอย่างยิ่งปัญหาของฉันคือการที่วางขีดเส้นใต้ระหว่างส่วนข้อมูลที่เข้ารหัส URL เมื่อฉันพาพวกเขาออกทุกอย่างทำงานได้ คุณอาจสามารถใช้เทคนิคที่คล้ายกันเพื่อเชื่อมต่อกับบริการของคุณและอ่านข้อความแสดงข้อผิดพลาดที่เกิดขึ้นจริง