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 に適していませんか?
私は何か間違ったことをしていますか?
どんな提案でも大歓迎です!