有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

servlet中创建java json对象时出错

在我把这个servlet上传到我的服务器后,它给出了一个错误,没有页面可以呈现给浏览器,响应与下面给出的错误相同。如果我在这个servlet中注释json objetc部分。服务器响应工作正常

浏览器显示错误

错误

 The character encoding of the plain text document was not declared. The document will render with garbled text in some browser configurations if the document contains characters from outside the US-ASCII range. 
 The character encoding of the file needs to be declared in the transfer protocol or file needs to use a byte order mark as an encoding signature.

servlet:

import org.json.JSONArray;
import org.json.JSONObject;
import org.json.JSONException;
import java.io.*;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class FBOAuth extends HttpServlet {

public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    PrintWriter out = response.getWriter();

    response.setContentType("application/json");
    response.setCharacterEncoding("UTF-8");

    String code = request.getParameter("code");
    if (code == null || code.equals("")) {
    }

    String token = null;
    try {
        String g = "https://graph.facebook.com/oauth/access_token?client_id=187359628094571&redirect_uri=" + URLEncoder.encode("http://proshelf-sivagnanam.rhcloud.com/fb.do", "UTF-8") + "&client_secret=3bada871309843a626e9ca4c1cd76fc8&code=" + code;
        URL u = new URL(g);
        URLConnection c = u.openConnection();
        BufferedReader in = new BufferedReader(new InputStreamReader(c.getInputStream()));
        String inputLine;
        StringBuffer b = new StringBuffer();
        while ((inputLine = in.readLine()) != null)
            b.append(inputLine + "\n");
        in.close();
token = b.toString();
        if (token.startsWith("{"))
            throw new Exception("error on requesting token: " + token + " with code: " + code);
    } catch (Exception e) {
            // an error occurred, handle this
    }

    String graph = null;
    try {
        String g = "https://graph.facebook.com/me?" + token;
        URL u = new URL(g);
        URLConnection c = u.openConnection();
        BufferedReader in = new BufferedReader(new InputStreamReader(c.getInputStream()));
        String inputLine;
        StringBuffer b = new StringBuffer();
        while ((inputLine = in.readLine()) != null)
            b.append(inputLine + "\n");
        in.close();
        graph = b.toString();
    } catch (Exception e) {
            // an error occurred, handle this
    }

    String facebookId = null;
    String firstName = null;
    String middleNames = null;
    String lastName = null;
    String email = null;
    try {
        JSONObject json = new JSONObject(graph);
        facebookId = json.getString("id");
        firstName = json.getString("first_name");
        if (json.has("middle_name"))
           middleNames = json.getString("middle_name");
        else
            middleNames = null;
        if (middleNames != null && middleNames.equals(""))
            middleNames = null;
        lastName = json.getString("last_name");
        email = json.getString("email");
    } catch (JSONException e) {
}
}

共 (0) 个答案