Заголовок запроса Http:
Host: www.mysite.com
Content-Type: application/x-www-form-urlencoded
Cookie: bbuserid=XXX; bbpassword=YYY; bbsessionhash=ZZZ
Content-Length: 252
Тело запроса Http:
message=%E4%F6%F5%FC%E4%F6%F5%FC%E4%F6%F5%FC%E4%F6%F5%FC&securitytoken=XXX&do=postreply&t=483553
Работает нормально!Данные, отправленные на сервер, декодируются на другом конце, и пользователь видит оригинальное сообщение äöõüäöõüäöõüäöõü
.
Теперь давайте попробуем реализовать этот точный пример с помощью JSoup:
//request body
Map<String, String> datamap = new HashMap<String, String>();
datamap.put(Session.SESSION_SECURITYTOKEN,"XXX");
datamap.put("message", URLEncoder.encode(finalText, "ISO-8859-1"));
datamap.put("do", "postreply");
datamap.put("t", "483553");
//make a post
Jsoup.connect(url)
.header("Content-Type","application/x-www-form-urlencoded")
.timeout(10000)
.cookie(Session.COOKIE_HASH_KEY,session.bbsessionhash)
.cookie(Session.COOKIE_PASSWORD_KEY,session.bbpassword)
.cookie(Session.COOKIE_USERID_KEY,session.bbuserid)
.data(datamap).post();
Мое сообщение получаетразмещен НО он не декодируется сервером.Поэтому, когда пользователь просматривает сообщение, которое он / она видит: %E4%F6%F5%FC%E4%F6%F5%FC%E4%F6%F5%FC%E4%F6%F5%FC
Примечание. Я выполняю запрос на публикацию сообщений с Android и публикую данные в программном обеспечении форума vBulletin (воспроизведение в ветке).
Проблема: Когда я отправляю сообщение с помощью JSoup, сервер видит его как обычный текст, а не закодированный текст. Как я могу заставить сервер понимать, что параметр сообщения содержит закодированный текст, а не простой текст?