2012-02-04 2 views
0

У меня возникли проблемы с попыткой POST JSON Array.Android POST JSON Array на сервер

Для моего Android кода, я передаю массив JSON в сервер, выполнив:

interests = // JSONArray of JSONObjects 
final ArrayList<NameValuePair> params = new ArrayList<NameValuePair>(); 
params.add(new BasicNameValuePair(PARAM_USERNAME, username)); 
params.add(new BasicNameValuePair(PARAM_INTERESTS, interests.toString())); 

HttpEntity entity = new UrlEncodedFormEntity(params); 
final HttpPost post = new HttpPost(UPDATE_INTERESTS_URI); 
post.setEntity(entity); 

// POST data to server 

Но когда я прочитал его с сервера, используя:

$interests = $_POST["interests"]; 
echo $interets 

Похоже [{\"a\":\"1\"},{\"b\":\"2\"}] вместо [{"a":"1"},{"b":"2"}]. Первый не будет правильно декодировать, а второй работает.

Так почему же он не работает?

EDIT:
Когда я смотрю на на Android в своем распоряжении постов, JSONArray.toString() выглядит [{"a":"1"},{"b":"2"}]

ответ

2

Не знаю, андроид, но это выглядит как magic quotes -feature РНР добавляет эти косые черты, если это так, вы могли бы использовать это на Сервер- сторона:

$interests = $_POST["interests"]; 
if (get_magic_quotes_gpc()) { 
    $interests = stripslashes($interests); 
} 
echo $interests; 
+0

Это исправило мою проблему, спасибо – Hank

0

Вы можете попробовать использовать:

StringEntity params = new StringEntity("your_Data");   

вместо вашей UrlEncodedEntity.

1

сделать это таким образом:

JSONObject paramInput = new JSONObject(); 
paramInput.put(PARAM_USERNAME, username); 
paramInput.put(INTERESTS, interests.toString()); 
StringEntity entity = new StringEntity(paramInput.toString(), HTTP.UTF_8); 
+0

Но нужно ли мне что-либо менять на стороне сервера? – Hank

+0

Я так не думаю. – waqaslam

Смежные вопросы