2009年8月10日月曜日

GAE/Jの間違いやすい?部分

参考ページ
参考ページ2
ここで詰まるのは少数派かもしれないがHttpURLConnectionクラスでリクエストを行うと日本語が文字化けを起こす。具体的にはPostRequest.java からのリクエストです→PostRequest.java???????????となってしまう。私は
package org.test;

import java.net.*;
import java.io.*;
import javax.servlet.http.*;

public class PostRequest extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
PrintWriter out = resp.getWriter();

URL url = new URL("http://localhost:8080/html/index.html");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("GET");

OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream());
writer.close();

if(connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
BufferedReader reader = new BufferedReader(
new InputStreamReader(
connection.getInputStream()));
resp.setContentType("text/html;charset=UTF-8");
String line;
while( (line = reader.readLine()) != null ) {
out.println(line);
}
reader.close();
} else {
resp.setContentType("text/html;charset=UTF-8");
out.println("error");
}
}
}
のように書いていたが太字の部分をPrintWriter out = resp.getWriter();の上に書かなければならない。
resp.setContentType("text/html;charset=UTF-8");
PrintWriter out = resp.getWriter();
//以下ほとんど同文


/html/index.html
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title>PostRequest.javaからのリクエスト</title>

</head>
<body>
<p>PostRequest.java からのリクエストです</p>
</body>
</html>

0 件のコメント:

コメントを投稿