0

Web ページのプロキシとして機能する Java サーブレットを作成し、AJAX を使用してクロス ドメイン リクエストを作成し、XML を取得しました。

サーブレットは、パラメーターを使用してサーバーにアクセスし、XML が格納されているサーバーから受け取ったものを返します。

URL を使用して REST を持つ Web Logic Server から XML をフェッチする Java サーブレットが機能しない理由を理解しようとしています。ただし、同じ URL を使用してブラウザー (IE9、Firefox) に貼り付けると、XML 応答が返されます。

これが私のコードです:

// build URL for specific request
    String url = baseURL + urlParams;

    //debug - check constructed URL
    if (debug.equals("true"))
    System.out.println("Constructed URL is " + url);


    // fetch XML from URL
    HttpClient client = new DefaultHttpClient();
    HttpGet getXML = new HttpGet(url);
    HttpResponse response = client.execute(getXML);
    StatusLine statusLine = response.getStatusLine();

    // Echo whatever headers you are interested in.
    Header[] allHeaders = response.getAllHeaders();

    resp.setStatus(statusLine.getStatusCode());
    BufferedWriter bufferedWriter = null;
    try
    {
        bufferedWriter = new BufferedWriter(resp.getWriter());
        InputStream content = response.getEntity().getContent();
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(content,"UTF-8"));
        String temp = null;

        while((temp = bufferedReader.readLine()) != null)
        {
            //debug - check response body
            if (debug.equals("true"))
                System.out.println(temp);

            bufferedWriter.write(temp);
            bufferedWriter.newLine();
        }
    }
    catch (Exception e)
    {
        resp.setStatus(500);
        // handle the exception
    }
    finally
    {
        if(bufferedWriter != null)
        {
            bufferedWriter.flush();
            bufferedWriter.close();
        }
    }

apache.http.client を使用したサーブレットの詳細

ウェブ XML 2.3

Web サーバーは Sun One 6.1 SP4 です (はい、これがレガシー システムであることはわかっています)

前に述べたように、サーブレットが使用している URL をサーバー ログで確認し、それをブラウザーにコピーしたところ、実際にその場所に XML が存在します。

私が使用している方法は REST に適していませんか?

私は何か間違ったことをしていますか?

どんな提案でも大歓迎です!

4

0 に答える 0