Android post array to web api [duplicate]

Поскольку люди, похоже, обращаются к этому вопросу, когда речь заходит об ошибках компоновщика, я собираюсь добавить это здесь.

Одной из возможных причин ошибок компоновщика с GCC 5.2.0 является то, что новая библиотека libstdc ++ ABI теперь выбран по умолчанию.

Если вы получаете ошибки компоновщика о неопределенных ссылках на символы, которые включают типы в пространстве имен std :: __ cxx11 или теге [abi: cxx11], то это, вероятно, указывает на то, что вы пытаетесь связать файлы объектов, которые были скомпилированы с различными значениями для макроса _GLIBCXX_USE_CXX11_ABI. Это обычно происходит при подключении к сторонней библиотеке, которая была скомпилирована с более старой версией GCC. Если сторонняя библиотека не может быть перестроена с новым ABI, вам нужно будет перекомпилировать свой код со старым ABI.

. Если вы вдруг получите ошибки компоновщика при переключении на GCC после 5.1.0 это было бы замечательно.

43
задан Rob 16 November 2013 в 18:46
поделиться

2 ответа

Если вы хотите отправить String, попробуйте этот способ:

String str =  "some string goes here";
byte[] outputInBytes = str.getBytes("UTF-8");
OutputStream os = conn.getOutputStream();
os.write( outputInBytes );    
os.close();

Но если вы хотите отправить Json сменить тип контента на:

conn.setRequestProperty("Content-Type","application/json");  

и теперь наш str мы можем написать:

String str =  "{\"x\": \"val1\",\"y\":\"val2\"}";

Надеюсь, что это поможет,

67
ответ дан Maxim Shoustin 25 August 2018 в 20:05
поделиться

Ссылка Guruparan в комментарии выше дает действительно хороший ответ на этот вопрос. Я настоятельно рекомендую посмотреть на него. Вот принцип, который заставляет его решение работать:

Из того, что я понимаю, HttpURLConnection представляет тело ответа как OutputStream. Поэтому вам нужно вызвать что-то вроде:

получить выходной поток соединения

OutputStream op = conn.getOuputStream();

записать тело ответа

op.write( [/*your string in bit form*/] );

закрыть выходной поток

op.close();

, а затем продолжайте свой веселый путь с помощью соединения (которое вам все равно нужно закрыть).

1
ответ дан PopulusTremuloides 25 August 2018 в 20:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: