Выполнить HttpPost с токеном Google в Android не получает данные JSON
HttpPost httpPost = new HttpPost("MyWebsiteURL");
try {
httpPost.setEntity(new StringEntity("https://www.googleapis.com/plus/v1/people/me?key="+token));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
InputStream is = httpEntity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
String json = sb.toString();
Log.i("JSON", json);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
3 ответа
Во-первых, вы не можете передать параметр, подобный этому, в посте http, используйте приведенный ниже код для вашего использования, может быть некоторая ошибка компиляции, так как я не использую и IDE для проверки кода, который публикую, главное - показать вам, как передавать параметры поста, используя http сообщение, используя NameValuePairs, пожалуйста, измените ваш URL соответственно
try {
HttpPost httppost = new HttpPost("https://www.googleapis.com/plus/v1/people/me");
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
nameValuePairs.add(new BasicNameValuePair("key", "12345"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
InputStream is = httpEntity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
String json = sb.toString();
Log.i("JSON", json);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Это публикация для аутентификации. Это вернет HttpResponse, содержащий токен доступа, который вы будете использовать при выполнении запроса HttpGet.
try {
Log.i(tag, "Starting doHTTPPost");
List<NameValuePair> pairs = new ArrayList<NameValuePair>();
pairs.add(new BasicNameValuePair("KEY", "VALUE"));
/* EXAMPLE of pairs */
pairs.add(new BasicNameValuePair("client_id","theGreatSecret12345"));
pairs.add(new BasicNameValuePair("username", "purple"));
pairs.add(new BasicNameValuePair("password", "asjdf098732hkndfa"));
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("The API Server you want to access");
post.setEntity(new UrlEncodedFormEntity(pairs));
HttpResponse response = client.execute(post);
HttpResponse apiResponse = response;
String resultFromServerAsAString = EntityUtils.toString(response.getEntity());
Log.i(tag, "Response statusCode : "+response.getStatusLine().getStatusCode());
Log.i(tag, "Response StatusLine : "+response.getStatusLine());
Log.i(tag, "Ending doHTTPPost");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Есть разница между POST и GET методом...
В GET METHOD вы можете передавать данные с URL....
но в методе POST вы не можете передавать данные с помощью URL... вы должны передавать их как сущность......... выполните следующие действия для передачи данных на URL
Попробуй это..
DefaultHttpClient httpClient = new DefaultHttpClient(new BasicHttpParams());
HttpPost httpPost = new HttpPost(WEBSITE_URL);
try{
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
//use this to pass variables while using POST method
// add an HTTP variable and value pair
nameValuePairs.add(new BasicNameValuePair("key name","key value"));
nameValuePairs.add(new BasicNameValuePair("key name","key value"));
nameValuePairs.add(new BasicNameValuePair("key name","key value"));
// passing data to the URL
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
//do the following..
}
Для вашего решения Вы должны пройти
nameValuePairs.add(new BasicNameValuePair("key",token));
Куда,
Key - variable or key you defined in Your page (Backend side)
token = is a value which you want to pass..........