Localhost WEB Api 总是 return 400 错误请求
Localhost WEB Api always return 400 Bad Request
我使用的是真正的 Android 设备。当我尝试调用 WEB Api 时,我收到 400 Bad Request。 API 位于本地主机 (IIS Express) 上。但是如果你从 windows 应用程序调用 Api 那么一切都很好。
Windows 应用程序 API 字符串 - https://localhost:44399/api/v1/families - return 200 正常
Android 应用程序 API 字符串 - https://192.168.0.102:44399/api/v1/families - return 400 错误请求
我的配置:
无线 LAN 适配器 Wi-Fi:
特定于连接的 DNS 后缀。 :
Link-本地 IPv6 地址。 . . . . : fe80::4dbf:c945:4125:74c8%5
IPv4 地址。 . . . . . . . . . . : 192.168.0.102
子网掩码。 . . . . . . . . . . : 255.255.255.0
默认网关。 . . . . . . . . : 192.168.0.1
我尝试了不同的方法:我连接到本地网络,连接到我的 wifi 网络,没有任何帮助。
目前看来这是正确的行为。您收到 400 错误请求,这意味着您正在访问服务器,但您没有正确发送请求。
这可能是因为您没有正确发送正文或参数,或者遗漏了一些。
尝试查看您的 Android 设备尝试发送到服务器的内容,您可能会发现问题所在。
请求将被路由到“192.168.0.102”,但默认情况下它不适用于 IIS Express。
请按照以下步骤操作。
在此之前,请将您的申请 API https://localhost:44399/api/v1/families
地址替换为 https://192.168.0.102:44399/api/v1/families
.
下载Jexus Manager并安装。
通过管理员权限打开Jexus Manager
。
单击此处并设置 IIS(检查您的 VS 版本)- Managing IIS Express Servers。
转到编辑站点 -> 绑定
添加具有正确值的新绑定,主机名应该是您的主机本地 IP 地址。在你的情况下 192.168.0.102
。
- 添加新绑定后,显示为,(这里我的本地IP地址是192.168.1.101。绑定你的后,它应该是你的主机IP地址。)
运行服务器。
@MRSessions完全正确。我们正在访问应用程序服务器。但是请求格式有问题。可能是请求的 header。请尝试使用不同的 headers,例如 Accept: application/json、content-type: application/json 等
您可以轻松匹配在浏览器或邮递员中点击发送的内容,以及通过 Logcat 发送的 android。方法如下:
尝试使用 postman 进行 api 测试并记下所有 header。现在您将了解有关请求的所有详细信息。
然后使用此 Http Logging Interceptor library 记录所有发送的请求。但是在这种情况下你需要使用 OkHttpClient 或 Retrofit。
我也遇到过很多次这种错误的请求问题。在比较邮递员请求格式和 android 请求格式后,我读到了它们。 Http Logging Interceptor 将在 Logcat 中显示有关请求格式的所有内容。您也可以在服务器的访问日志中阅读它们。
在这个 android 视频课程中,它使用 Laravel 并且我建议在 android 中使用相同的方式。请试试,这可能对你有帮助。
https://www.youtube.com/watch?v=StFvAYmg04o&list=PLEubh3Rmu4tn8xtkVcWnWOjQcGG4aeRK-
我使用的是真正的 Android 设备。当我尝试调用 WEB Api 时,我收到 400 Bad Request。 API 位于本地主机 (IIS Express) 上。但是如果你从 windows 应用程序调用 Api 那么一切都很好。
Windows 应用程序 API 字符串 - https://localhost:44399/api/v1/families - return 200 正常
Android 应用程序 API 字符串 - https://192.168.0.102:44399/api/v1/families - return 400 错误请求
我的配置: 无线 LAN 适配器 Wi-Fi:
特定于连接的 DNS 后缀。 :
Link-本地 IPv6 地址。 . . . . : fe80::4dbf:c945:4125:74c8%5
IPv4 地址。 . . . . . . . . . . : 192.168.0.102
子网掩码。 . . . . . . . . . . : 255.255.255.0
默认网关。 . . . . . . . . : 192.168.0.1
我尝试了不同的方法:我连接到本地网络,连接到我的 wifi 网络,没有任何帮助。
目前看来这是正确的行为。您收到 400 错误请求,这意味着您正在访问服务器,但您没有正确发送请求。
这可能是因为您没有正确发送正文或参数,或者遗漏了一些。
尝试查看您的 Android 设备尝试发送到服务器的内容,您可能会发现问题所在。
请求将被路由到“192.168.0.102”,但默认情况下它不适用于 IIS Express。
请按照以下步骤操作。
在此之前,请将您的申请 API https://localhost:44399/api/v1/families
地址替换为 https://192.168.0.102:44399/api/v1/families
.
下载Jexus Manager并安装。
通过管理员权限打开
Jexus Manager
。单击此处并设置 IIS(检查您的 VS 版本)- Managing IIS Express Servers。
转到编辑站点 -> 绑定
添加具有正确值的新绑定,主机名应该是您的主机本地 IP 地址。在你的情况下
192.168.0.102
。- 添加新绑定后,显示为,(这里我的本地IP地址是192.168.1.101。绑定你的后,它应该是你的主机IP地址。)
- 添加新绑定后,显示为,(这里我的本地IP地址是192.168.1.101。绑定你的后,它应该是你的主机IP地址。)
运行服务器。
@MRSessions完全正确。我们正在访问应用程序服务器。但是请求格式有问题。可能是请求的 header。请尝试使用不同的 headers,例如 Accept: application/json、content-type: application/json 等
您可以轻松匹配在浏览器或邮递员中点击发送的内容,以及通过 Logcat 发送的 android。方法如下:
尝试使用 postman 进行 api 测试并记下所有 header。现在您将了解有关请求的所有详细信息。
然后使用此 Http Logging Interceptor library 记录所有发送的请求。但是在这种情况下你需要使用 OkHttpClient 或 Retrofit。
我也遇到过很多次这种错误的请求问题。在比较邮递员请求格式和 android 请求格式后,我读到了它们。 Http Logging Interceptor 将在 Logcat 中显示有关请求格式的所有内容。您也可以在服务器的访问日志中阅读它们。
在这个 android 视频课程中,它使用 Laravel 并且我建议在 android 中使用相同的方式。请试试,这可能对你有帮助。
https://www.youtube.com/watch?v=StFvAYmg04o&list=PLEubh3Rmu4tn8xtkVcWnWOjQcGG4aeRK-