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端点