代码之家  ›  专栏  ›  技术社区  ›  pseudoabdul

邮递员可以查询lcoal API,android emulator发送的相同请求无法查询

  •  0
  • pseudoabdul  · 技术社区  · 4 年前

    我见过一些类似的问题,但这里似乎没有一个与我的问题完全匹配。

    我正在本地运行一个版本的API(C#),以测试一些更新。它连接到本地SQL数据库。

    这很奇怪,因为postman和android应用程序都可以在服务器上查询API的实时版本。

    我听说这可能是CORS的问题?

    重现问题的步骤:

    1. 启动本地API,将网页打开到本地端口。
    2. 使用postman生成restsharp代码,并从xamarin android项目内部运行该代码。

    我得到的错误总是状态代码0。

    以下代码是在请求成功后通过postman生成的。

    var client = new RestClient("http://localhost:53884/token");
    client.Timeout = -1;
    var request = new RestRequest(Method.GET);
    request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
    request.AddHeader("Cookie", ".AspNet.Cookies=7u9...JRrb");
    request.AddParameter("username", "redacted");
    request.AddParameter("password", "redacted2");
    request.AddParameter("grant_type", "password");
    IRestResponse response = client.Execute(request);
    Console.WriteLine(response.Content);
    

    由于IP的原因,我无法共享API代码,但它在服务器上运行时适用于应用程序,包括本地和邮递员直播。

    0 回复  |  直到 4 年前
        1
  •  0
  •   pseudoabdul    4 年前

    我已经解决了我的问题,所以我将转告我所采取的步骤。

    这是假设您正在本地运行API,并且希望能够使用android仿真器访问本地主机。作为记录,我的android emulator正在运行我的xamarin应用程序,但它应该适用于任何应用程序。

    1. 安装传送带(I) these (说明)
    2. 关闭VisualStudio。
    3. 允许输送机安装
    4. 当防火墙提示时,让传送带自动设置您的帖子
    5. 打开API解决方案
    6. 右键单击API项目并选择“设置为启动项目”
    7. 顶部绿色运行箭头旁边的文本应更改。我的更改为“IIS Express(Microsoft Edge)”。我相信您可以在web配置文件中更改这一点。
    8. 按绿色箭头。这应该可以做一些事情。首先,它应该在本地主机地址打开浏览器。对我来说是http://localhost:53884/ . 如果您遇到类似“应用程序“/”中的服务器错误”这样的错误,请不要担心。尽管我假设您的问题与我的问题完全相同,但您的问题也曾在postman工作过,所以您已经做到了这一点。
    9. 在VisualStudio的底部将有一个名为“Keyoti传送带”的选项卡。单击它以显示URL。复制http远程URL地址。
    10. 运行你的xamarin应用程序,它现在应该可以访问API了。

    我会说,我还没有让https删除URL工作。我得到错误:错误:SecureChannelFailure(身份验证失败,因为远程方已关闭传输流)。我的API同时允许HTTP和HTTPS请求,所以HTTP对我有效,但如果HTTPS有效,我将添加一个编辑,说明我是如何做到的。