Android 在改装请求中添加动态收割台和车身

Android 在改装请求中添加动态收割台和车身,android,retrofit,retrofit2,Android,Retrofit,Retrofit2,我正在使用改装2,并使用令牌密钥保护API 所以我需要将令牌添加到请求中 这是我的终点: http://192.168.1.22:8000/api/auth/queue/store @Multipart @POST("auth/queue/store") Call<ResponseBody> registerQueue(@Header("Authorization") String Authorization,@Part("task") RequestBody task);

我正在使用
改装2
,并使用令牌密钥保护API 所以我需要将令牌添加到请求中

这是我的终点:

http://192.168.1.22:8000/api/auth/queue/store
@Multipart
@POST("auth/queue/store")
Call<ResponseBody> registerQueue(@Header("Authorization") String Authorization,@Part("task") RequestBody task);
    public void sendNetworkRequest(String token, String task) {
    String temp ="Bearer "+token;
        RequestBody taskBody = RequestBody.create(MediaType.parse("text/plain"), task);
        Log.d(TAG, "send Network Request: Task: "+task+" "+" "+ temp  );

        Retrofit.Builder builder = new Retrofit.Builder()
                .baseUrl("http://192.168.1.22:8000/api/")
                .addConverterFactory(GsonConverterFactory.create());
        Retrofit retrofit = builder.build();
        ApiInterface apiInterface = retrofit.create(ApiInterface.class);
        Call<ResponseBody> call = apiInterface.registerQueue(temp,taskBody);

        call.enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {

                if(response.isSuccessful()) {
                    Log.d(TAG, "SignUn Successful: ");
                    Toast.makeText(QueueActivity.this, "SignUp Successful", Toast.LENGTH_LONG).show();
                    onQueueSuccess();
                }else{
                    onQueueFailed(); // This is where the code ends and it doesn't add anything to API database
                }

            }

            @Override
            public void onFailure(Call<ResponseBody> call, Throwable t) {

                Log.d(TAG,"went wrong",t);
                Toast.makeText(QueueActivity.this, "something went wrong", Toast.LENGTH_LONG).show();
                onQueueFailed();

            }
        });
请求后改装:

http://192.168.1.22:8000/api/auth/queue/store
@Multipart
@POST("auth/queue/store")
Call<ResponseBody> registerQueue(@Header("Authorization") String Authorization,@Part("task") RequestBody task);
    public void sendNetworkRequest(String token, String task) {
    String temp ="Bearer "+token;
        RequestBody taskBody = RequestBody.create(MediaType.parse("text/plain"), task);
        Log.d(TAG, "send Network Request: Task: "+task+" "+" "+ temp  );

        Retrofit.Builder builder = new Retrofit.Builder()
                .baseUrl("http://192.168.1.22:8000/api/")
                .addConverterFactory(GsonConverterFactory.create());
        Retrofit retrofit = builder.build();
        ApiInterface apiInterface = retrofit.create(ApiInterface.class);
        Call<ResponseBody> call = apiInterface.registerQueue(temp,taskBody);

        call.enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {

                if(response.isSuccessful()) {
                    Log.d(TAG, "SignUn Successful: ");
                    Toast.makeText(QueueActivity.this, "SignUp Successful", Toast.LENGTH_LONG).show();
                    onQueueSuccess();
                }else{
                    onQueueFailed(); // This is where the code ends and it doesn't add anything to API database
                }

            }

            @Override
            public void onFailure(Call<ResponseBody> call, Throwable t) {

                Log.d(TAG,"went wrong",t);
                Toast.makeText(QueueActivity.this, "something went wrong", Toast.LENGTH_LONG).show();
                onQueueFailed();

            }
        });
**更新okHttpInterceptor日志**

04-07 16:00:11.614 24583-25144/com.example.comunicate D/OkHttp: --> POST http://192.168.1.22:8000/api/auth/queue/store http/1.1
04-07 16:00:11.614 24583-25144/com.example.comunicate D/OkHttp: Content-Type: multipart/form-data; boundary=958f2f27-e6d5-453b-836d-d2ef8073ef5a
04-07 16:00:11.615 24583-25144/com.example.comunicate D/OkHttp: Content-Length: 232
04-07 16:00:11.616 24583-25144/com.example.comunicate D/OkHttp: Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjcsImlzcyI6Imh0dHA6XC9cLzE5Mi4xNjguMS4yMjo4MDAwXC9hcGlcL2F1dGhcL2xvZ2luIiwiaWF0IjoxNDkxNTY5OTkwLCJleHAiOjE0OTE1NzM1OTAsIm5iZiI6MTQ5MTU2OTk5MCwianRpIjoiN2ZmYWZhM2ZmMTJiOTM3Y2RhNmVkNjAyYzc4Zjk3ZWUifQ.JuOxvj80nr9LmjCvJqwSERmJD-jOtg_W9UHs232lEzY
04-07 16:00:11.618 24583-25144/com.example.comunicate D/OkHttp: --958f2f27-e6d5-453b-836d-d2ef8073ef5a
04-07 16:00:11.618 24583-25144/com.example.comunicate D/OkHttp: Content-Disposition: form-data; name="task"
04-07 16:00:11.618 24583-25144/com.example.comunicate D/OkHttp: Content-Transfer-Encoding: binary
04-07 16:00:11.618 24583-25144/com.example.comunicate D/OkHttp: Content-Type: text/plain; charset=utf-8
04-07 16:00:11.618 24583-25144/com.example.comunicate D/OkHttp: Content-Length: 6
04-07 16:00:11.618 24583-25144/com.example.comunicate D/OkHttp: mobile
04-07 16:00:11.618 24583-25144/com.example.comunicate D/OkHttp: --958f2f27-e6d5-453b-836d-d2ef8073ef5a--
04-07 16:00:11.618 24583-25144/com.example.comunicate D/OkHttp: --> END POST (232-byte body)
04-07 16:00:11.804 24583-25144/com.example.comunicate D/OkHttp: <-- 404 Not Found http://192.168.1.22:8000/api/auth/queue/store (185ms)
04-07 16:00:11.804 24583-25144/com.example.comunicate D/OkHttp: Host: 192.168.1.22:8000
04-07 16:00:11.804 24583-25144/com.example.comunicate D/OkHttp: Connection: close
04-07 16:00:11.804 24583-25144/com.example.comunicate D/OkHttp: X-Powered-By: PHP/5.6.30
04-07 16:00:11.804 24583-25144/com.example.comunicate D/OkHttp: Cache-Control: no-cache, private
04-07 16:00:11.804 24583-25144/com.example.comunicate D/OkHttp: Content-Type: application/json
04-07 16:00:11.804 24583-25144/com.example.comunicate D/OkHttp: Date: Fri, 07 Apr 2017 13:00:12 GMT
04-07 16:00:11.813 24583-25144/com.example.comunicate D/OkHttp: {"error":{"message":"404 Not Found","status_code":404}}
04-07 16:00:11.813 24583-25144/com.example.comunicate D/OkHttp: <-- END HTTP (55-byte body)
04-07 16:00:11.614 24583-25144/com.example.com通信D/OkHttp:-->发布http://192.168.1.22:8000/api/auth/queue/store http/1.1
04-07 16:00:11.614 24583-25144/com.example.com通信数据/OkHttp:Content-Type:multipart/form-data;边界=958f2f27-e6d5-453b-836d-d2ef8073ef5a
04-07 16:00:11.615 24583-25144/com.example.com通信地址D/OkHttp:Content-Length:232
04-07 16:00:11.616 24583-25144/com.example.com通信地址D/OkHttp:Authorization:BearerEYJJZWIIOJCSIMLZCYI6IMH6XC9CLZE5MI4NJGUMS4YMJ4MDAWXC9HCGLCL2F1GHCL2XVZ2LUIIW0IJOXNY5KWLJLJLcE0OJ0EYIZI0OTIZIZI6TZM6TZM6YZM6RHZM3RHYYYZJJJJJJJJ2WUY2WUYF9JJJJJJ9WUJJJJJJJ9WUZZZZJJJJJ9WUZZZZZZZZJJJJJJJJJJ9JJ9JJJJJ9JJJJ9JJJJJJJJJ9JJJ9
04-07 16:00:11.618 24583-25144/com.example.com通信地址D/OkHttp:--958F2F2F27-e6d5-453b-836d-d2ef8073ef5a
04-07 16:00:11.618 24583-25144/com.example.com通信数据/OkHttp:Content-Disposition:form-data;name=“任务”
04-07 16:00:11.618 24583-25144/com.example.com通信数据/OkHttp:内容传输编码:二进制
04-07 16:00:11.618 24583-25144/com.example.com通信D/OkHttp:Content Type:text/plain;字符集=utf-8
04-07 16:00:11.618 24583-25144/com.example.com通信地址D/OkHttp:Content-Length:6
04-07 16:00:11.618 24583-25144/com.example.com通信D/OkHttp:mobile
04-07 16:00:11.618 24583-25144/com.example.com通信地址D/OkHttp:--958F2F2F27-e6d5-453b-836d-d2ef8073ef5a--
04-07 16:00:11.618 24583-25144/com.example.com通信D/OkHttp:-->结束POST(232字节正文)

04-07 16:00:11.804 24583-25144/com.example.com通信D/OkHttp:您应该拦截您的请求并在标头中添加令牌。如果您的令牌过期(应该过期),改型还支持重新身份验证。
以下教程提供了您所需的一切:

执行请求时,您可以共享日志吗?@azizbekian更新了问题使用并共享这些日志。@azizbekian您的意思是使用Interceptor添加标题?否。使用
okHttpInterceptor
,它将在
Logcat
中记录您的网络调用。然后,您将能够看到您发送到后端的请求以及您在
Logcat
中收到的内容。但是为什么他不能使用
@Header
?@azizbekian,因为应用程序可能需要刷新令牌。如果使用普通请求头执行此操作,则必须管理失败的请求。您必须捕获所有(401-未授权)、验证用户、获取新令牌,然后重试请求。这是相当棘手的管理和改装提供了一种优雅的方式。是的,但假设令牌一切正常,为什么他不能发送
@Header
?最后,问题是为什么令牌没有被发送出去。@EmanuelCanha我已经看过教程了。他们在博客中考虑两种方式。我添加了
拦截器
。我将感谢你的帮助opinion@Poorya似乎您的问题与令牌无关。您的日志显示404,这意味着您的设备无法到达API端点