2011-06-28 233 views
27

jspにプロキシコードを書くことで、自分のコンピュータからローカルに他のドメインにajaxを呼び出そうとしています。これが私のjQuery AJAXコードで、proxy.jspページを呼び出しています。publicIdとsystemIdの間に空白が必要です

var metadata = 'https://rest-search.host.com/machine/search/meta?id='; 

var on_show_info= function() { 

    var AjaxCall = data + current_doc_info.id; 
    alert(AjaxCall); 
       request_meta_info = $.ajax({ 
       url: "proxy.jsp?url=" + AjaxCall, 
       type: 'GET', 
       success: check, 
       error: error 
     }); 
    }; 

そして、私のJSPファイルがある: -

<%@ page language="java" import="org.w3c.dom.*,javax.xml.parsers.DocumentBuilder,javax.xml.parsers.DocumentBuilderFactory,java.net.*,java.io.*" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<% 

String urlToQuery = request.getParameter("url"); 
System.out.println("rj " +urlToQuery); 
URL url = new URL(urlToQuery); 
final String login ="user"; 
final String password ="pass"; 

Authenticator.setDefault(new Authenticator() { 
    protected PasswordAuthentication getPasswordAuthentication() { 
     return new PasswordAuthentication (login, password.toCharArray()); 
    } 
}); 
URLConnection conn = url.openConnection(); 

InputStream in = conn.getInputStream(); 

DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance(); 
DocumentBuilder db =dbf.newDocumentBuilder(); 
Document doc=db.parse(urlToQuery); 


NodeList nl= doc.getElementsByTagName("attr"); 
%> 


<%= nl.item(0).getFirstChild().getNodeValue() %> 

そして、私は応答をチェックすると、私はそれを解析しているXMLファイルに対してこのエラーを取得しています:

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/> 
<title>Error 500 White spaces are required between publicId and systemId.</title> 
</head> 
<body><h2>HTTP ERROR 500</h2> 
<p>Problem accessing /proxy.jsp. Reason: 
<pre> White spaces are required between publicId and systemId.</pre></p><h3>Caused by:</h3><pre>org.xml.sax.SAXParseException: White spaces are required between publicId and systemId. 
    at org.apache.xerces.parsers.DOMParser.parse(Unknown Source) 
    at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source) 
    at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:180) 
    at org.apache.jsp.proxy_jsp._jspService(org.apache.jsp.proxy_jsp:70) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:109) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:389) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:486) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:380) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) 
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390) 
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 
    at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:327) 
    at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126) 
    at org.tuckey.web.filters.urlrewrite.NormalRewrittenUrl.doRewrite(NormalRewrittenUrl.java:213) 
    at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:171) 
    at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145) 
    at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92) 
    at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:381) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:67) 
    at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:122) 
    at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:110) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) 
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 
    at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230) 
    at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) 
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
    at org.mortbay.jetty.Server.handle(Server.java:326) 
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:536) 
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:915) 
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:539) 
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) 
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:405) 
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) 
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) 
</pre> 
<hr /><i><small>Powered by Jetty://</small></i><br/>             
</body> 
</html> 

そして、 XMlファイルはこれです: -

<results><result><attr value="HW/SW" name="Line"/><attr value="ASIC" name="Description"/><attr value="CD" name="Number"/><attr value="AS" name="DocumentType"/><attr value="" name="Date"/><</result></results> 

何wrオング、私は任意の提案は...

答えて

28

エラーメッセージは、明らかでない場合は実際には正しく表示されます。あなたのDOCTYPEはSYSTEM識別子を持っている必要があります。私はあなたには公開識別子しかないと仮定します。

あなたは(例えば)でエラーが発生します:

<!DOCTYPE persistence PUBLIC 
    "http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> 

あなたがしません:秒1で終わり

<!DOCTYPE persistence PUBLIC 
    "http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" ""> 

お知らせ"" - それは、システムの識別子。エラーメッセージは混乱しています。システム識別子が必要であり、publicIdと(存在しない)systemIdの間にスペースが必要というわけではありません。

ところで、空のシステム識別子は理想的ではないかもしれませんが、動かすだけで十分かもしれません。

String WSDL_URL= <get value from properties file>; 
Customer service = new Customer(new URL(WSDL_URL)); 
ExecutePtt port = service.getExecutePt(); 
return port.createMantainCustomers(part); 

とJavaは投げ::

+2

このエラーを無視するためにJavaを取得するには離れていますか? –

1

を理解されるであろう...ここでやっている私は、この記事を見つけました:ここhttp://forum.springsource.org/showthread.php?68949-White-spaces-are-required-between-publicId-and-systemId./page2&s=c69fe19798f5a071d22eaf681ca84a56

カップルの人は、XMLファイル内の周りのラインを切り替えることで成功を収めました。

+0

レスポンスありがとうございます。xmlファイルはapache solrから来ていますので編集できません。 // www.w3schools.com/xml/note.xml' – ferhan

+0

リンクで特定された問題は、実際にはいくつかのシナリオの正しい解決策です。 xsi:schemaLocation値の場合は、各ネームスペースの後にスキーマの場所を指定する必要があり、別のネームスペースを指定する必要はありません。 – Jaywalker

1

私はちょうど私がこのようなカスタムURLで、JAX-WSを消費しようとしていた、この例外に私の自己を発見した

XML reader error: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,63] 
Message: White spaces are required between publicId and systemId. 

が判明しますサービスを構築するために使用されたURL文字列の最後に "?wsdl"がないことを確認してください。例えば :

悪い:

http://www.host.org/service/Customer 

グッド:

http://www.host.org/service/Customer?wsdl 
+0

ありがとうございます。それはNetbeansでWebサービスクライアントを作成しなければならない問題です。 – appmaster

0

あなたがインターネットに接続するには、ブラウザのプロキシを使用する必要がありますいくつかのネットワークから作業している場合(おそらくオフィスビル)、そうかもしれない。私は同じ問題を抱え、それを解決したネットワーク設定にプロキシ設定を追加しました。

  • あなたの好みに移動すると
  • (エクリプス - Windows上で>設定 - マック、またはWindow上>設定) - >一般 - >の下にリストを表示するために拡大 - > [ネットワーク接続]を選択し(ドン
  • 表示されるページの上部にドロップダウンがあります。[手動]を選択します。
  • 次に、ドロップダウンのすぐ下にあるリストで「HTTP」を選択します(これにはすべてのオプションがチェックされているはずです)。リストの右側にある「編集」ボタンをクリックします。
  • プロキシのURLとポートを入力すると、Webブラウザでインターネットに正常に接続する必要があります。
  • 「HTTPS」の手順を繰り返します。

プロキシのURLとポートがわからない場合は、ネットワーク管理者に相談してください。

1

ステートメントの順序を変更します。

xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd 
        http://www.springframework.org/schema/context" 

でコード

xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/beans/spring-beans.xsd" 

のブロックを変更する私にとって は、有効です。

関連する問題