英文:
glitch.com project can't be called with c#
问题
我写这个问题是关于 glitch.com 项目的上下文。
所以,我在 glitch.com 中创建了一个测试项目(asp.net .net6 webapi),该项目返回您的 IP 地址。网页链接是 https://ror-test.glitch.me/getip。当从浏览器调用时,它运行得非常完美并且返回响应准确。现在,我想从 C# 客户端(准确地说是 Unity3D)访问此项目,但我无法访问它。
我的第一次尝试是使用 httpclient.getstringasync
-
代码-
HttpClient client = new HttpClient();
string response = await client.GetStringAsync(url);
System.Console.WriteLine(response);
输出-
未处理的异常。System.Net.Http.HttpRequestException: 响应状态代码未指示成功:403(禁止)。
在我的第二次尝试中,我使用了 httpclient.getasync
-
代码-
HttpClient client = new HttpClient();
var response = await client.GetAsync(url);
输出-
响应内容 - https://jpst.it/348LS
还要说一句,当我从 Node.js 调用该项目时,我的应用程序运行得非常完美-
代码 -
var url = "https://ror-test.glitch.me/getip";
var XMLHttpRequest = require("xhr2");
var xhr = new XMLHttpRequest();
console.log("starting");
xhr.open("GET", url);
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
console.log(xhr.status);
console.log(xhr.responseText);
}};
xhr.send();
输出 -
starting
200
your ip: xx.xx.xxx.xx
在 xx.xx.xxx.xx 的位置,我的真实 IP 地址,我已经通过 https://whatismyipaddress.com/ 进行了交叉检查。所以我确信问题出现在 C# 客户端。
请帮助我,或者是否有其他方法可以从 C# 客户端(精确地说是 Unity3D)调用它。
英文:
I am writing this question in context of glitch.com projects.
so, i made a test project(asp.net .net6 webapi) in glitch.com which returns your ip address. The link to the webpage is https://ror-test.glitch.me/getip . It runs perfectly fine and returns response accurately when called from a browser. Now, I want to access this project from c# client (to be precise unity3d) however i am unable to access it.
My first try was to use httpclient.getstringasync-
Code-
HttpClient client = new HttpClient();
string response = await client.GetStringAsync(url);
System.Console.WriteLine(response);
Output-
Unhandled exception. System.Net.Http.HttpRequestException: Response status code does not indicate success: 403 (Forbidden).
In my second try i used httpclient.getasync
Code-
HttpClient client = new HttpClient();
var response = await client.GetAsync(url);
Output-
Response - https://jpst.it/348Ik
Response.Content - https://jpst.it/348LS
Also just to say that my app is working perfectly fine when i call the project from nodejs it works perfectly-
Code -
var url = "https://ror-test.glitch.me/getip";
var XMLHttpRequest = require("xhr2");
var xhr = new XMLHttpRequest();
console.log("starting");
xhr.open("GET", url);
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
console.log(xhr.status);
console.log(xhr.responseText);
}};
xhr.send();
Output -
starting
200
your ip: xx.xx.xxx.xx
In place of xx.xx.xxx.xx my real ip which i have cross checked with https://whatismyipaddress.com/ is coming. so i am sure problem is with c# client.
Plz help me or any other way i can call it from c# client(precisely unity3d).
答案1
得分: 1
你需要传递“User-Agent”请求头。
HttpClient client = new HttpClient();
// 添加用户代理
client.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", "fake");
var response = await client.GetAsync(url);
英文:
You need to pass User-Agent
request header.
HttpClient client = new HttpClient();
//add user agent
client.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", "fake");
var response = await client.GetAsync(url);
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论