Поскольку люди, похоже, обращаются к этому вопросу, когда речь заходит об ошибках компоновщика, я собираюсь добавить это здесь.
Одной из возможных причин ошибок компоновщика с GCC 5.2.0 является то, что новая библиотека libstdc ++ ABI теперь выбран по умолчанию.
Если вы получаете ошибки компоновщика о неопределенных ссылках на символы, которые включают типы в пространстве имен std :: __ cxx11 или теге [abi: cxx11], то это, вероятно, указывает на то, что вы пытаетесь связать файлы объектов, которые были скомпилированы с различными значениями для макроса _GLIBCXX_USE_CXX11_ABI. Это обычно происходит при подключении к сторонней библиотеке, которая была скомпилирована с более старой версией GCC. Если сторонняя библиотека не может быть перестроена с новым ABI, вам нужно будет перекомпилировать свой код со старым ABI.
blockquote>. Если вы вдруг получите ошибки компоновщика при переключении на GCC после 5.1.0 это было бы замечательно.
Если вы хотите отправить 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\"}";
Надеюсь, что это поможет,
Ссылка Guruparan в комментарии выше дает действительно хороший ответ на этот вопрос. Я настоятельно рекомендую посмотреть на него. Вот принцип, который заставляет его решение работать:
Из того, что я понимаю, HttpURLConnection представляет тело ответа как OutputStream. Поэтому вам нужно вызвать что-то вроде:
получить выходной поток соединения
OutputStream op = conn.getOuputStream();
записать тело ответа
op.write( [/*your string in bit form*/] );
закрыть выходной поток
op.close();
, а затем продолжайте свой веселый путь с помощью соединения (которое вам все равно нужно закрыть).