当前位置: 首页 > 知识库问答 >
问题:

HttpClient返回404未找到

姬正文
2023-03-14

我有一个xamarin应用程序,可以从webAPI中提取数据。我多次检查api地址,我确信它是正确的。当我调试代码时,服务器上出现404 not found错误。然而,当我将URL复制并粘贴到浏览器时,我得到了预期的结果。我不明白为什么我的应用程序返回404。

我的方法:

   public async Task<ICustomerType> GetById(int id)
    {
        string _token;

        if (App.Current.Properties.ContainsKey("token"))
        {
            _token = (string)App.Current.Properties["token"];
        }
        else
        { _token = null; }

        var webApiResponse =
            _connector.PostAsync(
                "api/Customer/get/id/" + id,
                string.Empty, _token).Result;

        var response = webApiResponse.Result.ToString();

        var jObjectResponse = JObject.Parse(response);

        ICustomerType customerTypeObj = null;

        return customerTypeObj;
    }

我的桥接方法到HttpClient的PostAsync方法:

    private async Task<TResponse> PostAsync(string requestPath, string 
jsonContent, bool getToken, string token)
    {
        HttpClient client = new HttpClient();

            client.BaseAddress = new Uri(_apiUrl);
            client.DefaultRequestHeaders.Accept.Clear();
            var contentType = new MediaTypeWithQualityHeaderValue("application/json");
            client.DefaultRequestHeaders.Accept.Add(contentType);

            if (getToken)
            {
                token =  GetApiTokenAsync().Result;
            }

            if (!string.IsNullOrEmpty(token))
            {
                client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);
            }

            var httpContent = new StringContent(jsonContent, Encoding.UTF8, "application/json");

            var response = client.PostAsync(requestPath, httpContent).Result;
            var jsonData = await response.Content.ReadAsStringAsync();
            return JsonConvert.DeserializeObject<TResponse>(jsonData);

    }

代币:正确

API URL:正确(我从调试输出中检查“/”符号。它们放置得很好。我的Api喜欢:https://MyApi.net/api/Personel/get/id/1)

我的错误:

  • 响应{StatusCode: 404,原因短语:“未找到”,版本: 1.1,内容:系统。网。https。流内容,标题:{请求上下文: appId=cid-v1:Some_String服务器: Kestrel
    Strict-Transport-Security: max-age=Some_Int设置Cookie: ARRAffinity=Some_String;路径=/;HttpOnly;域=我的域日期:周一,7月9日2018 07:54:19格林尼治标准时间X-Powerd-By: ASP. NET内容长度: 0}}系统。网。Http。Http响应消息

共有1个答案

莫典
2023-03-14

API中的方法动词是“GET”,但在客户端中使用了“POST”,因此在浏览器中可以工作,因为浏览器调用“GET”,但在客户端中不工作。

代替:

   var webApiResponse =
        _connector.PostAsync(
            "api/Customer/get/id/" + id,
            string.Empty, _token).Result;

使用:

   var webApiResponse =
        _connector.GetAsync(
            "api/Customer/get/id/" + id,
            string.Empty, _token).Result;
 类似资料:
  • 我正在用Laravel 8制作一个论坛,基本上每当用户在这个论坛上提问时,它应该被重定向到这个问题。 我还想使重定向过程基于问题的字段。

  • 我创建了一个部署、一个服务和一个入口,以便能够从我的主机访问NGINX web服务器,但我一直没有找到404。经过长时间的故障排除,我已经到了一个非常欢迎帮助的地步。 步骤和相关yaml文件如下所示。 启用Minikube NGINX入口控制器 minikube插件支持入口 创建NGINX web服务器部署 创建ClusterIP服务以管理对POD的访问 创建入口以从集群外部访问服务 测验 连接到

  • 我用Spring 4和Spring security设置了一个简单的REST API web.xml AccountController.java mysabisabi-servlet.xml mysabisabi-security.xml 应用程序上下文.xml 日志文件 当我尝试访问 我得到 我已经尝试了 和作为url模式,但仍然相同。 有人能指出我错过了什么吗? 谢了。

  • 我正在按照一些教程从头开始建立一个spring mvc项目。最初,我将web应用程序配置为在Tomcat中运行。我编写了一个简单的controller类,请求点击“/”。但tomcat总是向我显示“HTTP状态404-找不到”错误。 我看了很多这样的问题,但那些答案对我都不起作用 删除tomcat安装并重新配置。当点击localhost:8080/时,我将获得tomcat主页。 检查了代码的拼写

  • 当我从JavaScript客户端调用AWS API网关时,会出现404 not found错误,因为SDK调用了错误的endpoint: https://www.myserver.com/abc123.execute-api.us-east-1.amazonaws.com/dev/status 而不是 https://abc123.execute-api.us-east-1.amazonaws.c

  • 我将使用此jwt令牌对api-gateway进行另一次调用,以访问受保护的服务。 API gateway API gateway项目具有以下相关依赖项: 我在application-dev.yml中设置了这个配置 您可以看到寻址服务的路由(当时没有服务发现)。我实现了一个SecurityConfig类,如教程中所示: 希望我报告了所有需要的信息,我会请求一些帮助,使用从keycloak获得的访问令