Android 如何修复twitter响应代码=400,消息=Bad请求?

Android 如何修复twitter响应代码=400,消息=Bad请求?,android,androidx,android-twitter,Android,Androidx,Android Twitter,我在android中集成了witter登录。但在回应时,它总是在日志中返回我: code=400, message=Bad Request 及 如果我打印的话,我会在logcat中看到令牌,秘密值。但反应总是如此。我在这里使用分支IO进行深度链接 public void attachTwitter(String token, String secret) { apiService.attachTwitterAccount(PreferenceHandler.readStrin

我在android中集成了witter登录。但在回应时,它总是在日志中返回我:

code=400, message=Bad Request

如果我打印的话,我会在logcat中看到令牌,秘密值。但反应总是如此。我在这里使用分支IO进行深度链接

 public void attachTwitter(String token, String secret) {
        apiService.attachTwitterAccount(PreferenceHandler.readString(EditProfileActivity.this, SIGNIN_ID, ""),
                token, secret, "twitter").enqueue(new Callback<Object>() {

            @Override
            public void onResponse(Call<Object> call, Response<Object> response) {
                Log.i("accessToken", "onResponse");
                if (!response.isSuccessful()) {
                    try {
                        JSONObject object = new JSONObject(response.errorBody().string());
                        JSONObject error = object.optJSONObject("error");
                        String code = error.optString("code");
                        String description = error.optString("description");

                        if (code.equalsIgnoreCase("338")) {
                            showCustomDialog(EditProfileActivity.this, string(R.string.server_error_description_338));
                            switchTwitter.setChecked(false);
                        }

                    } catch (Exception e) {

                    }
                }
            }

            @Override
            public void onFailure(Call<Object> call, Throwable t) {
                Log.i("accessToken", "onFailure");
                switchTwitter.setChecked(false);
            }
        });
    } 
public void attachTwitter(字符串令牌、字符串秘密){
apiService.attachTwitterAccount(PreferenceHandler.readString(EditProfileActivity.this,SIGNIN_ID,“”)和,
令牌,秘密,“twitter”).enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
Log.i(“accessToken”、“onResponse”);
如果(!response.issusccessful()){
试一试{
JSONObject对象=新的JSONObject(response.errorBody().string());
JSONObject error=object.optJSONObject(“错误”);
字符串代码=error.optString(“代码”);
字符串描述=error.optString(“描述”);
if(代码等信号情况(“338”)){
showCustomDialog(EditProfileActivity.this,字符串(R.string.server_error_description_338));
switchTwitter.setChecked(false);
}
}捕获(例外e){
}
}
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
Log.i(“accessToken”、“onFailure”);
switchTwitter.setChecked(false);
}
});
} 
attachTwitterAccount方法代码为:

@FormUrlEncoded
    fun attachTwitterAccount(@Field("id") id: String,
                             @Field("authToken") token: String,
                             @Field("authSecret") authSecret: String,
                             @Field("typeAttach") typeAttach: String): Call<Any>
@FormUrlEncoded
fun attachTwitterAccount(@Field(“id”)id:String,
@字段(“authToken”)标记:字符串,
@字段(“authSecret”)authSecret:String,
@字段(“typeAttach”)typeAttach:String):调用

有人能告诉我如何解决这个问题吗?

一个错误的请求意味着您发送到服务器的请求不是它期望的方式或形式。医生对这个请求怎么说?这是一个帖子吗?a你明白吗?。如果这是一个职位,那么你应该发送一个机构

要发送正文和帖子,首先需要为正文创建一个类。在科特林,情况是这样的:

class Body(var id: String,
                        var authToken: String,
                        var authSecret: String,
                        var accomplished: Double,
                        var typeAttach: String
                        )
然后,在请求中调用主体:

@POST("post value which")
fun attachTwitterAccount(@Body body:Body): Call<Any>
@POST(“POST value which”)
趣味attachTwitterAccount(@Body:Body):呼叫
最后,您可以从attach Twitter函数调用它。创建实体实例,然后将其作为参数传递

如果您仍然收到相同的错误,请查看Twitter文档,您可能遗漏了一些内容

在其他环境(如Postman)中尝试对服务器进行相同的调用,看看它是否在那里工作,这总是一个好主意?这是确定问题是在服务器端还是在应用程序端的好方法


让我知道它是否有效

我正在使用POST请求并发送正文。这些问题导致从Twitter发布授权并返回应用程序屏幕。
@POST("post value which")
fun attachTwitterAccount(@Body body:Body): Call<Any>