#java #android #json #httpclient
#java #Android #json #httpclient
Вопрос:
Я пытаюсь отправить некоторые данные, отформатированные как JSONObject, на веб-сервер. Насколько я понимаю, это делается с помощью httpclient на Android, а затем php-файла на сервере. Если это не так, остановитесь здесь и поправьте меня, в противном случае вот как я пытаюсь отправить данные:
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://myhost/data.php");
try {
String UN = username.getText().toString();
String PW = password.getText().toString();
String jString = "{"login": { "username": "" UN "","password": "" PW ""}}";
JSONDATA = new JSONObject(jString);
//JSONDATA = new JSONObject();
//JSONDATA.put("username", UN);
//JSONDATA.put("password", PW);
должен ли я использовать: httppost.setEntity(новый UrlEncodedFormEntity(JSONDATA));
или я должен делать это следующим образом:
StringEntity se = new StringEntity(JSONDATA.toString());
se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
HttpEntity entity;
entity = se;
httppost.setEntity(entity);
HttpResponse response;
response = httpclient.execute(httppost);
Ответ №1:
Вопрос на самом деле в том, как вы планируете извлекать данные на сервере? Как выглядит ваш PHP? Что может быть проще всего, так это просто передать JSON в качестве параметра:
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://myhost/data.php");
try {
String UN = username.getText().toString();
String PW = password.getText().toString();
String jString = "{"login": { "username": "" UN "","password":"" PW ""}}";
List <NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add(new BasicNameValuePair("value", jString));
httppost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
HttpResponse response;
response = httpclient.execute(httppost);
и затем на стороне сервера вы можете просто сделать
<?php
$obj = json_decode($_POST['value']);
чтобы извлечь его.