2015-02-04 2 views
0

У меня есть простой Java-код, который отправляет запрос POST в php-файл, например, я отправляю «test + -», когда я возвращаю сообщение «test» - «почему удаляется + ?_POST [] удалить все + знак

Код java преобразует текст в байты, возможно, есть потеря признака?

OutputStream out=conn.getOutputStream(); 
     out.write(test.getBytes()); 

Thx для справки.

Update:

Я tyed out.write(URLEncoder.encode(test).getBytes());, THx к @Marek, но с этим методом PHP не распознает текст POST

Edit:

Найдено решение, основанный на @HugoDelsing answer Я просто заменяю в php-классе все пробелы + и решая ошибку.

$test = str_replace(' ', '+', $test);

+1

Знак '+' - это кодированная версия для 'space'. –

+0

«Повторное кодирование» 1 символ на стороне php не устранит проблему с начальной кодировкой. Кроме того, теперь вы не можете размещать пустые места без их неправильной замены на знаки плюс. – Phil

+0

@ Phil_1984_ Это то, что я отправляю, это просто зашифрованный текст RSA, поэтому не может быть пробела, или я так думаю. – peti446

ответ

1

Вы не можете просто написать пост поток, вы должны кодировать его, например, с помощью URLEncoder:

out.write(URLEncoder.encode(test).getBytes()); 

Это не ясно, какую кодировку вы используете, поставить его в качестве второго параметра ,

+0

Когда я ставлю это так же, 'OutputStream out = conn.getOutputStream(); out.write (URLEncoder.encode (querry.getBytes(), type)); 'я получаю ошибку, которую байт [] не может преобразовать в строку, если я разрешаю ей как stryn, тогда поток вывода говорит, что он должен be byte [] – peti446

+0

Правильно, 'getBytes()' должно быть на возвращаемом значении, обновлен ответ. – Marek

+0

ok Я попробовал это, его вернуть, что нет переменных, установленных в _POST ['test'] – peti446

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