React Native Fetch POST TypeError:标头字段名称中的字符无效

时间:2020-07-21 06:17:14

标签: javascript java react-native fetch

我在获取时遇到一些问题,尤其是POST方法。我具有登录功能,可以登录到应用程序,但是当我输入用户名和密码时,错误如下所示。这个项目就像从Android Studio到React Native的迁移/重写。注意:电子邮件,密码,device_id和fcm_token是从应用程序加密的,并以加密字符串的形式发送到服务器。

此外,我也在Postman上对它进行了测试,并在主体上使用了加密的字符串,并且可以正常工作。有什么建议为什么会引发错误?谢谢。

postman

error

这是React Native中用于获取登录API的代码

LoginEmail.js

...
await fetch(ApiUrl.login, {
        method: "POST",
        headers: new Headers({
          "Accept": "application/x-www-form-urlencoded",
          "Content-Type": "application/x-www-form-urlencoded",
          "Eventku-Api-Key": AppData.apiKey
        }),
        body:
          JSON.stringify( {
            "&email=": cipherEmail.toString(),
            "&password=": cipherPass.toString(),
            "&device_id=": cipherDevice.toString(),
            "&fcm_token=": cipherToken.toString()
          })
      }).then(response => response.text()).then(responseJson => {
...

这是要登录的Java代码

ApiServices.java

...
//login using email
@FormUrlEncoded
@POST("login")
Call<ResponUser> login(
   @Field("email") String email,
   @Field("password") String password,
   @Field("device_id") String device_id,
   @Field("fcm_token") String fcm_token
);
...

LoginActivity.java

...
apiServices.login(
   Strings.encryptData(edtEmail.getText().toString()),
   Strings.encryptData(edtPassword.getText().toString()),
   Strings.encryptData(imeiNumber),
   Strings.encryptData(fcm.getString(getString(R.string.FCM_TOKEN),""))
).enqueue(new Callback<ResponUser>() {
...

1 个答案:

答案 0 :(得分:1)

这是由后端中的400错误代码引起的,将其更改为200,并且未显示“标头字段名称中的无效字符”错误。也许React Native只处理200条代码,而不是400条代码

相关问题