0
私はJavaでバックエンド付きのアンドロイドアプリを開発しており、Http Postを介して通信しています。 英語以外の文字が含まれているリクエストを送信すると、バックエンドは正常に動作しますが、バックエンドが英語以外の文字を返そうとすると '?'として受信します。 は私がparmas "STR=שלום עולם"
(ヘブライ文字)Http PostからUTF-8レスポンスを受信
バックエンド・サンプル・サーブレットとして送ることだと言う:
public class DebugServlet extends HttpServlet {
@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
String param = req.getParameter("STR");
log(param); //Prints שלום עולם, So receiving fine!
try(PrintWriter out = resp.getWriter()) {
out.print(param);
}
}
}
クライアントコード:
private final static String CHARSET = "UTF-8";
public static void send(String server, String servletName, Map<String, String> params){
try{
URL url = new URL(server + servletName);
URLConnection connection = url.openConnection();
HttpURLConnection conn = (HttpURLConnection) connection;
OutputStream os;
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
conn.setRequestMethod("POST");
conn.setUseCaches(false);
conn.setDoInput(true);
conn.setDoOutput(true);
os = conn.getOutputStream();
//Add parameters
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, CHARSET));
StringBuilder paramsSB = new StringBuilder();
boolean isFirst = true;
for(Map.Entry<String,String> entry : params.entrySet()){
if(isFirst)
isFirst = false;
else
paramsSB.append("&");
paramsSB.append(URLEncoder.encode(entry.getKey(), CHARSET));
paramsSB.append("=");
paramsSB.append(URLEncoder.encode(entry.getValue(), CHARSET));
}
writer.append(paramsSB.toString());
writer.flush();
writer.close();
os.close();
int responseCode;
responseCode = conn.getResponseCode();
if (responseCode != 200)
throw new RuntimeException("...");
StringBuilder chain = new StringBuilder("");
try(BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()))) {
String line = "";
while ((line = rd.readLine()) != null) {
chain.append(line);
}
}
Log.d("MyTAG", chain.toString()); //Prints "???? ????", that's the problem
} catch (IOException e) {
// writing exception to log
throw new RuntimeException("...");
}
}
感謝:)あなたが応答を設定する必要が