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

Javascript React Native Fetch POST TypeError:标头字段名中的字符无效,javascript,java,react-native,fetch,Javascript,Java,React Native,Fetch,我在fetch方面有一些问题,特别是在POST方法方面。我有一个登录功能来登录应用程序,但是当我输入用户名和密码时,错误显示如下。这个项目就像是从Android Studio迁移/重写到React Native。注意:电子邮件、密码、设备id和fcm_令牌从应用程序加密,并将其作为加密字符串发送到服务器 另外,我也在邮递员身上用加密字符串对它进行了测试,结果很好。有没有关于它为什么会出错的建议?谢谢 下面是React Native to fetch登录API中的代码 LoginEmail.j

我在fetch方面有一些问题,特别是在POST方法方面。我有一个登录功能来登录应用程序,但是当我输入用户名和密码时,错误显示如下。这个项目就像是从Android Studio迁移/重写到React Native。注意:电子邮件、密码、设备id和fcm_令牌从应用程序加密,并将其作为加密字符串发送到服务器

另外,我也在邮递员身上用加密字符串对它进行了测试,结果很好。有没有关于它为什么会出错的建议?谢谢

下面是React Native to fetch登录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
);
...
。。。
//使用电子邮件登录
@FormUrlEncoded
@发布(“登录”)
呼叫登录(
@字段(“电子邮件”)字符串电子邮件,
@字段(“密码”)字符串密码,
@字段(“设备id”)字符串设备id,
@字段(“fcm_标记”)字符串fcm_标记
);
...
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>() {
...
。。。
apiServices.login(
Strings.encryptData(edtEmail.getText().toString()),
Strings.encryptData(edtPassword.getText().toString()),
Strings.encryptData(imeiNumber),
Strings.encryptData(fcm.getString(getString(R.string.fcm_令牌),“”)
).enqueue(新的回调函数(){
...

这是由我的后端中的400错误代码造成的,将其更改为200,并且没有显示“标头字段名称中的无效字符”错误。可能React纯本机处理200代码而不是400

不知道您的标头(所有名称看起来都很好),但您肯定不想使用
JSON.stringify()
发布
应用程序/x-www-form-urlencoded
格式化data@Phil我可以知道为什么吗?如果我用类似
“&email=“+cipherEmail.toString()的内容更改正文+
可以吗?为什么?因为
JSON.stringify
生成JSON,但您没有发布JSON。请搜索如何在react native中最好地创建
应用程序/x-www-form-urlencoded
字符串。在浏览器中,我只会使用
URLSearchParams
,但我不知道您是否可以使用它you@Phil给你发一个控制器le是我的朋友