【发布时间】:2016-10-17 01:12:48
【问题描述】:
我想使用安卓手机访问我的后端。此刻我想做两件事:
- 通过后端身份验证后登录 mob 应用。
- 将数据上传到后端(后端是带有 Laravel 框架的 PHP)。
我先发邮件和密码到后台,得到了JWTtoken的回复,如图:
“eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjEsImlzcyI6Imh0dHA6XC9cLzE5Mi4xNjguMS4xMDI6ODAwMFwvYXBpXC92M1wvYXV0aGVudGljYXRlIiwiaWF0IjoxNDY2MDA5OTY3LCJleHAiOjE0NjYwMTM1NjcsImp0aSI6IjZjYjBlMTRjYTNkMjAzM2Q4OWM0NzM1M2ZjNjMzZTU2In0.GJGUjgy8U-uqjLSqJcysDTmgrNvxBHH03iBflLjsOwA” P>
一旦上面的令牌返回到 mob 应用程序,我想发送相同的返回令牌以进行进一步的发布请求,因为上面的 jwt 令牌是我访问后端的密钥。
所以我的问题在于将相同的令牌发送回后端。这看起来简单直接,因为我已经开始与我的后端进行通信,并且我还使用 post man 检查了我的回复。
我还可以使用邮递员上的 jwt 令牌获取用户密码。
现在适用于邮递员的相同令牌不适用于我的 android。我知道我的 httpClient 和 httpPost 正在工作,因为我已经发送了电子邮件和密码。我也知道我的 android post 请求正在到达服务器,因为我返回的结果带有我为接受的令牌请求构建的错误消息,如下所示。
您可以从上面的快照中看到。当发布以进行身份验证时,我首先在引号中获取令牌(首先突出显示)。所以我删除了报价并发布了相同的令牌以获取用户凭据,但这次我收到了一个错误响应,我在后端构建了它。
这就是为什么我认为我的令牌无法正确发送到服务器的原因。但我无法解决问题。但我猜令牌大小很大,长度为 490。那么我应该如何将我的令牌与 httpPost 请求附加在一起?我构建请求的代码如下所示:
public String getJsonString2(String url, String jwtString) {
String jsonString = "";
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
List nameValuePair = new ArrayList(1);
nameValuePair.add(new BasicNameValuePair("token", jwtString));
try {
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair));
}
catch (UnsupportedEncodingException e) {
// writing error to Log
e.printStackTrace();
}
// Making HTTP Request
try {
HttpResponse response = httpClient.execute(httpPost);
jsonString = EntityUtils.toString(response.getEntity(), HTTP.UTF_8);
} catch (ClientProtocolException e) {
// writing exception to log
e.printStackTrace();
} catch (IOException e) {
// writing exception to log
e.printStackTrace();
}
return jsonString;
}
我也尝试使用 MultipartEntityBuilder 来解析参数(在我的例子中是令牌),但是 MultipartEnityBuilder 库在构建时使我的程序崩溃:
使用以下依赖项将 MultipartEnityBuilder 库添加到我的项目中:
//for accessing the MultipartEntity lbrary
compile "org.apache.httpcomponents:httpcore:4.2.4"
compile "org.apache.httpcomponents:httpmime:4.3"
MultipartEntity 导致的错误
所以现在我的问题是: 如何将 jwt 令牌值从 android 发送到 Laravel 后端。
【问题讨论】:
-
令牌不能作为 JWT 的表单数据发送。请参阅 [this] (github.com/tymondesigns/jwt-auth/wiki/Authentication)。