我正在开发一个Android应用程序,用户登录到他/她的帐户。登录后,我将收到XSRF令牌和Laravel会话ID以识别特定用户。我必须为我发送给API的每个请求发送这些令牌以获取相应的信息。但是,当我发送图像中显示的所需详细信息时,我将HTMl文件作为响应而不是获取JSON对象。我严重陷入了这个问题。正确的解决方案可以推进整个应用程序。
class RegisterConnection extends AsyncTask<String,String,JSONObject> {
protected JSONObject doInBackground(String... arg0) {
JSONObject output = new JSONObject();
DefaultHttpClient client = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(client.getParams(), 5000); //Timeout Limit
HttpResponse response = null;
try {
HttpGet get = new HttpGet(statsURL);
get.setHeader("Accept", "application/json");
CookieStore store = new BasicCookieStore();
BasicClientCookie cookie1 = new BasicClientCookie("XSRF-TOKEN", XSRF);
BasicClientCookie cookie2 = new BasicClientCookie("laravel_session", laravel);
store.addCookie(cookie1);
store.addCookie(cookie2);
client.setCookieStore(store);
response = client.execute(get);
if(response!=null){
InputStream in = response.getEntity().getContent();
String resultstring = Utilities.convertStreamToString(in);
Log.i("Result1", resultstring);
output = new JSONObject(resultstring);
Log.i("Result2", output.toString());
}
} catch(Exception e) {
e.printStackTrace();
try {
output.put("sai","error");
Log.i("MainActivity", output.toString());
} catch (JSONException e1) {
e1.printStackTrace();
}
return output;
}
return output;
}
这些是服务器要求
这是收到的输出
答案 0 :(得分:1)
据我所知,您的Android客户端代码没有任何问题。
您正在从服务器获取HTML,因此主要原因可能是您的Laravel服务器正在呈现视图并向您发回html而不是JSON。
您应该在Laravel服务器端发送JSON响应,而不是在服务器上呈现视图。
答案 1 :(得分:0)
在gradle文件中添加Jsoup依赖项 实现'org.jsoup:jsoup:1.11.2'
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode == PICK_IMAGE && resultCode == Activity.RESULT_OK) {
if (data == null) {
//Display an error
return;
}
InputStream inputStream = this.getContentResolver().openInputStream(data.getData());
}