有没有一种方法可以使用 WebRequest Class 在 80 以外的其他端口上查询服务器?
Is there a method to query a server on another port than 80 with the WebRequest Class?
我正在尝试使用 WebRequest Class 从身份服务器获取不记名令牌,因为该程序必须使用 .NET 2.0,并且我从中获取令牌的端口是 10000。
我尝试像
这样创建 WebRequest
- identityURL:10000/getToken
- http://identityURL:10000/getToken
但没有一个有效。第一个 returns "Unkown URL Prefix"-错误,第二个 returns-错误,第二个
在 .NET 2.0 下是否有其他方法获取令牌?
非常感谢您的帮助。
-西蒙
编辑:
Using wc As New WebClient()
Dim postData As String = "grant_type=" + sTokenGrantType + "&username=" + sIdentityServerClientName + "&password=" + sIdentityServerClientSecret + "&scope=Api"
Dim byteArray As Byte() = Encoding.UTF8.GetBytes(postData)
Dim responseArray As Byte()
wc.Headers.Add(HttpRequestHeader.ContentType, "application/x-www-form-urlencoded")
wc.Headers.Add(HttpRequestHeader.ContentLength, byteArray.Length.ToString)
wc.Headers.Add(HttpRequestHeader.UserAgent, "User-Agent: PostmanRuntime/7.15.0")
wc.BaseAddress = sIdentityServerURL
responseArray = wc.UploadData("/getToken", "POST", byteArray)
MsgBox(responseArray)
End Using
我尝试使用 WebClient class,但这会导致以下错误:"An exception occurred during a WebClient request."
已解决(见下文)
我在互联网上搜索了一下,下面的内容似乎有效。我还没有尝试过,但我在几个网站上找到了以下代码参考。
Uri myUri = new Uri("http://{server}:{port}");
WebRequest.Create(Uri);
此外,检查 ServicePoint.BindIPEndPointDelegate
回调是否有帮助。示例代码:
public static IPEndPoint BindIPEndPointCallback(ServicePoint servicePoint, IPEndPoint remoteEndPoint, int retryCount)
{
Console.WriteLine("BindIPEndpoint called");
return new IPEndPoint(IPAddress.Any,5000);
}
public static void Main()
{
HttpWebRequest request = (HttpWebRequest) WebRequest.Create("http://MyServer");
request.ServicePoint.BindIPEndPointDelegate = new BindIPEndPoint(BindIPEndPointCallback);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
}
这摘自here。尝试更改第 3 行中的端口号。
感谢您的帮助,但我自己解决了这个问题,方法是使用 WebClient 而不是 WebRequest。我是这样做的:
该代码与上面发布的代码略有不同。我在 WebClient 中遇到的异常是由于我设置的 HTTP-Headers 之一出现问题。
Using wc As New WebClient()
Dim postData As String = "grant_type=" + sTokenGrantType + "&client_id=" + sIdentityServerClientName + "&client_secret=" + sIdentityServerClientSecret + "&scope=Api"
Dim byteArray As Byte() = Encoding.UTF8.GetBytes(postData)
Dim responseArray As Byte()
wc.Headers.Add(HttpRequestHeader.ContentType, "application/x-www-form-urlencoded")
wc.BaseAddress = sIdentityServerURL
responseArray = wc.UploadData("/getToken", "POST", byteArray)
End Using
我正在尝试使用 WebRequest Class 从身份服务器获取不记名令牌,因为该程序必须使用 .NET 2.0,并且我从中获取令牌的端口是 10000。
我尝试像
这样创建 WebRequest- identityURL:10000/getToken
- http://identityURL:10000/getToken
但没有一个有效。第一个 returns "Unkown URL Prefix"-错误,第二个 returns-错误,第二个
在 .NET 2.0 下是否有其他方法获取令牌?
非常感谢您的帮助。
-西蒙
编辑:
Using wc As New WebClient()
Dim postData As String = "grant_type=" + sTokenGrantType + "&username=" + sIdentityServerClientName + "&password=" + sIdentityServerClientSecret + "&scope=Api"
Dim byteArray As Byte() = Encoding.UTF8.GetBytes(postData)
Dim responseArray As Byte()
wc.Headers.Add(HttpRequestHeader.ContentType, "application/x-www-form-urlencoded")
wc.Headers.Add(HttpRequestHeader.ContentLength, byteArray.Length.ToString)
wc.Headers.Add(HttpRequestHeader.UserAgent, "User-Agent: PostmanRuntime/7.15.0")
wc.BaseAddress = sIdentityServerURL
responseArray = wc.UploadData("/getToken", "POST", byteArray)
MsgBox(responseArray)
End Using
我尝试使用 WebClient class,但这会导致以下错误:"An exception occurred during a WebClient request."
已解决(见下文)
我在互联网上搜索了一下,下面的内容似乎有效。我还没有尝试过,但我在几个网站上找到了以下代码参考。
Uri myUri = new Uri("http://{server}:{port}");
WebRequest.Create(Uri);
此外,检查 ServicePoint.BindIPEndPointDelegate
回调是否有帮助。示例代码:
public static IPEndPoint BindIPEndPointCallback(ServicePoint servicePoint, IPEndPoint remoteEndPoint, int retryCount)
{
Console.WriteLine("BindIPEndpoint called");
return new IPEndPoint(IPAddress.Any,5000);
}
public static void Main()
{
HttpWebRequest request = (HttpWebRequest) WebRequest.Create("http://MyServer");
request.ServicePoint.BindIPEndPointDelegate = new BindIPEndPoint(BindIPEndPointCallback);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
}
这摘自here。尝试更改第 3 行中的端口号。
感谢您的帮助,但我自己解决了这个问题,方法是使用 WebClient 而不是 WebRequest。我是这样做的:
该代码与上面发布的代码略有不同。我在 WebClient 中遇到的异常是由于我设置的 HTTP-Headers 之一出现问题。
Using wc As New WebClient()
Dim postData As String = "grant_type=" + sTokenGrantType + "&client_id=" + sIdentityServerClientName + "&client_secret=" + sIdentityServerClientSecret + "&scope=Api"
Dim byteArray As Byte() = Encoding.UTF8.GetBytes(postData)
Dim responseArray As Byte()
wc.Headers.Add(HttpRequestHeader.ContentType, "application/x-www-form-urlencoded")
wc.BaseAddress = sIdentityServerURL
responseArray = wc.UploadData("/getToken", "POST", byteArray)
End Using