При передачи сообщения, содержащим кириллицу, сервер отображает:
[B@163fa4e.
Сообщение передаю в UTF-8. Но серверу не удается прочесть его корректно.
Как справится с этой проблемой?
Метод кодирования:
try {
SecretKeySpec signingKey = new SecretKeySpec(KEY.getBytes(StandardCharsets.UTF_8), SHA_TYPE);
Mac mac = Mac.getInstance(SHA_TYPE);
mac.init(signingKey);
byte[] rawHmac = mac.doFinal(VALUE.getBytes(StandardCharsets.UTF_8));
byte[] hexArray = {
(byte)'0', (byte)'1', (byte)'2', (byte)'3',
(byte)'4', (byte)'5', (byte)'6', (byte)'7',
(byte)'8', (byte)'9', (byte)'a', (byte)'b',
(byte)'c', (byte)'d', (byte)'e', (byte)'f'
};
byte[] hexChars = new byte[rawHmac.length * 2];
for ( int j = 0; j < rawHmac.length; j++ ) {
int v = rawHmac[j] & 0xFF;
hexChars[j * 2] = hexArray[v >>> 4];
hexChars[j * 2 + 1] = hexArray[v & 0x0F];
}
return new String(hexChars);
}
catch (Exception ex) {
throw new RuntimeException(ex);
}
protected Void doInBackground(Void... params) {
// 1. create HttpClient
HttpClient httpclient = new DefaultHttpClient();
// 2. make POST request to the given URL
HttpPost httpPost = new HttpPost (url);
String json = "";
// 3. build jsonObject
String holder = CreateCard.fullName.getText ().toString();
byte bytes[] = holder.getBytes(StandardCharsets.UTF_8);
String s = new String(bytes, StandardCharsets.UTF_8);
JSONObject jsonObject = new JSONObject ();
jsonObject.accumulate ("cardHolder", s);
// json = mapper.writeValueAsString(person);
// 5. set json to StringEntity
StringEntity se = new StringEntity (json);
// 6. set httpPost Entity
httpPost.setEntity (se);
// 7. Set some headers to inform server about the type of the content
String hash;
String key = ModelAuth.salt + Autorization.smsCode;
hash = hmacSha (key, json, "HmacSHA256");
httpPost.setHeader ("Content-Type", "application/json");
httpPost.setHeader ("language", "RU");
httpPost.setHeader ("sessionId", ModelAuth.sessionId);
httpPost.setHeader ("reqSign", hash);
// 8. Execute POST request to the given URL
HttpResponse httpResponse = httpclient.execute (httpPost);
// 9. receive response as inputStream
inputStream = httpResponse.getEntity ().getContent ();
// 10. convert inputstream to string
if (inputStream != null){
result = convertInputStreamToString (inputStream);
}
else
result = "Did not work!";
} catch (Exception e) {
Log.d ("InputStream", e.getLocalizedMessage ());
}
return null;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Вот у меня типичный формат properties файла: name=value а что если у меня value довольно длинное я хочу использовать перенос строки? Это возможно?
Необходим ListView, в котором при нажатии на него открывается модальное окно с выбором одного из элементов listview ,а после выбора его отметить