【问题标题】:Rest API's working in Postman but not in Android applicationRest API 在 Postman 中工作,但不在 Android 应用程序中
【发布时间】:2020-05-01 20:31:31
【问题描述】:

Rest API 可以在 Postman 中使用 chrome,但是当尝试从 android 应用程序发出相同的请求时,仅在以下情况下有效: 在邮递员中执行请求(例如 POST 请求 A),运行 android 应用程序,我得到 POST REQUEST A 的预期结果。对于不同的 POST 请求(例如 POST REQUEST B),我必须再次执行 POST REQUEST B在 POSTMAN 中,然后在我的应用程序中执行操作。在不执行 POST REQUEST B 时,会在我的应用程序中获得 POST REQUEST A 的响应。

同样在超时一段时间后,如果我只是运行发出 POST 请求的 android 应用程序,我会收到以下错误: {"message":"缺少身份验证令牌"}

当尝试从浏览器访问url对象中提供的链接时,甚至会得到上述错误消息 URL url = 新 URL("LINK");

出现上述问题的原因可能是什么?

Code snippet:

    URL url = new URL(LINK); 
    con = (HttpURLConnection) url.openConnection();
    InputStream errorStream = con.getErrorStream();
    if (errorStream != null) {
         BufferedReader br1 = new BufferedReader(new 
         InputStreamReader(errorStream));
         String errorInConnection = readStream(br1);
         Log.d(TAG, "errorInConnection:"+errorInConnection);
         }
    con.setRequestProperty("Authorization", "no auth");
    con.setRequestMethod("POST");
    con.setRequestProperty("Content-Type", "application/json");
    con.setRequestProperty("Accept", "application/json");
    con.setDoOutput(true);
    con.setChunkedStreamingMode(0);

In POSTMAN:

        {
             "data": {
                "currLat":some cordinate,
                "currLong":some coordinate
              },
              "datatype": "geodata"
        }

Header:
Key - Content-Type
Value - application/json

【问题讨论】:

  • 能否请您发布您的问题的代码 sn-p。
  • 你能把你在android studio中使用的代码和postman中api的body和header贴出来
  • 如上编辑的是代码sn-p
  • 在 openConnection() 之后不久,我总是收到 Missing Authentication Token

标签: android api postman


【解决方案1】:

欢迎对我的以下答案进行更正,另外我想提一下,我是 android 新手以及处理 REST API 的

我没有收到回复的原因是我没有正确发布数据。如前所述,就我而言,我应该发布 JSON 数据。在发布 JSON 数据时,即使是像发布 "latitude":12.321"latitude":"12.321" 这样的小错误也不能做。必须遵循语法。如果您发布了错误的数据,您将收到以下类型的错误:

{"errorMessage":"java.lang.NullPointerException","errorType":"java.lang.NullPointerException","stackTrace":["java.io.Writer.write(Writer.java:157)","com.bosch.in.dataloggerlambda.StramDataProcessosLambda.handleRequest(StramDataProcessosLambda.java:102)","sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)","sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)","sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","java.lang.reflect.Method.invoke(Method.java:498)"]}

如果在 postman 中获得响应,那么我们将从 android studio 生成的 HttpUrlConnection 获得响应。

由于我的网址是用于发布和发布的,因此必须存在数据才能获得响应,当我将链接粘贴到浏览器中时,它给了我以下错误:

error: {"message":"Missing Authentication Token"}

在 android studio 中也观察到了同样的情况。在许多其他情况下,您可能会遇到相同的错误,我不确定。但是,在尝试发出 POST 请求时,请确保即使来自 android studio,您也需要发送数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-08
    • 2021-08-25
    • 1970-01-01
    • 2015-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-28
    相关资源
    最近更新 更多