2013-07-12 23 views
0

我正在使用Processing我无法加载XML时,如何从服务器获取html错误说明

我有这样的查询服务器:

//温度是含有该looong URL

try{ 
    xml = loadXML(temp); 
    }catch(Exception e){ 
     e.printStackTrace(); 
    } 

我故意做出的URL错误的字符串。当我在浏览器中复制并粘贴URL(或点击上面的内容)时,浏览器会显示一条很好的消息,指明发生的错误。 “缺少参数:autor”。我想访问这些信息以显示给用户。但stackTrace更加密码(最后粘贴)并且不包含上面的有用消息......我怎么能得到这个消息? 如果我做loadStrings(“http://stackoverflow.com”)例如,我得到所有的HTML作为字符串,这将足够我的,但与上面的url中的错误500我得到一个错误,并没有达到HTML,但浏览器确实如何?服务器是否提供一些备用html?有这个地址吗? 需要更多信息?

处理2.0愿意与javaScript兼容。

感谢

这是错误页面的HTML:

<html> 
     <head></head> 
     <body> 
     <pre style="word-wrap: break-word; white-space: pre-wrap;">Missing parameter:     autor. </pre>     
     </body> 
    </html> 

“java.io.IOException异常:服务器返回的HTTP响应代码:500网址:http://www.camara.gov.br/SitCamaraWS/Proposicoes.asmx/ListarProposicoes?sigla=PL&numero=&ano=1960&datApresentacaoIni=&datApresentacaoFim=&parteNomeAutor=&siglaPartidoAutor=&siglaUFAutor=&generoAutor=&IdSituacaoProposicao=&IdOrgaoSituacaoProposicao=&&codEstado=&codOrgaoEstado=&emTramitacao=在sun.net.www。在processing.core.PApplet上的processing.core.PApplet.createInputRaw(PApplet.java:6960)处的java.net.URL.openStream(URL.java:1010)处的protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1436) .createInput(PApplet.java:6928)位于processing.core.PApplet.createReader(PApplet.java:6722)位于processing.core.PApplet.loadXML(PApplet.java:6070)位于processing.core.PApplet.loadXML(PApp在processing.core上的processing.core.PApplet.handleDraw(PApplet.java:2245)上的buildingQuery2_class.setup(buildingQuery2_class.java:23)上的buildingQuery2_class $ Query.makeQuery(buildingQuery2_class.java:161)上执行let.java:6060)。 PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:243)at processing.core.PApplet.run(PApplet.java:2141)at java.lang.Thread.run(Thread.java:680)http://www.camara.gov.br/SitCamaraWS/Proposicoes.asmx/ListarProposicoes?sigla=PL&numero=&ano=1960&datApresentacaoIni=&datApresentacaoFim=&parteNomeAutor=&siglaPartidoAutor=&siglaUFAutor=&generoAutor=&IdSituacaoProposicao=&IdOrgaoSituacaoProposicao=&&codEstado=&codOrgaoEstado=&emTramitacao=不存在或无法读取java .net.MalformedURLException at java.net.URL。(URL.java:601)at java.net.URL。(URL.java:464)at java.net.URL。(URL.java:413)at com.sun .org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:649)at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:186)at com.sun .org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:772)at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)at com.sun .org.apache.xerces。 internal.parsers.XMLParser.parse(XMLParser.java:119)at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:232)at com.sun.org.apache.xerces。 internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284)位于processing.core.PApplet的processing.data.XML。(XML.java:170)位于processing.core.PApplet.loadXML(PApplet.java:6070)处。处理时在processing.core.PApplet.handleDraw(PApplet.java:2245)处的buildingQuery2_class.setup(buildingQuery2_class.java:23)处的buildingQuery2_class $ Query.makeQuery(buildingQuery2_class.java:161)处的loadXML(PApplet.java:6060)。 core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:243)at processing.core.PApplet.run(PApplet.java:2141)at java.lang.Thread.run(Thread.java:680)

回答

0

我得到了一个很好的答案为processing forum by PhiLho .. 我会把它留在这里以备将来之用读者:

//code from PhiLho at: 
//http://forum.processing.org/topic/how-can-i-get-html-error-description-from-server-when-loading-xml 

import java.net.*; 
import java.io.*; 
String url1 = "http://www.camara.gov.br/SitCamaraWS/Proposicoes.asmx/ListarProposicoes?sigla=PL&numero=&ano=1960&datApresentacaoIni=&datApresentacaoFim=&parteNomeAutor=&siglaPartidoAutor=&siglaUFAutor=&generoAutor=&IdSituacaoProposicao=&IdOrgaoSituacaoProposicao=&&codEstado=&codOrgaoEstado=&emTramitacao="; 
String url2 = "http://Processing.org"; 
// With information frm http://stackoverflow.com/questions/4596447/java-check-if-file-exists-on-remote-server-using-its-url 
URL url = null; 
try 
{ 
    url = new URL(url1); 
} 
catch (MalformedURLException e) 
{ 
    println("Error in URL " + e); 
    exit(); 
} 

HttpURLConnection connection = null; 
try 
{ 
    connection = (HttpURLConnection) url.openConnection(); 
    connection.setRequestMethod("GET"); 
    int code = connection.getResponseCode(); 
    if (code != HttpURLConnection.HTTP_OK) 
    { 
    println("Answer: " + code + " - " + connection.getResponseMessage()); 
    InputStream error = connection.getErrorStream(); 
    if (error != null) 
    { 
     println("Error response:"); 
     String[] lines = loadStrings(error); 
     println(lines); 
     error.close(); 
    } 
    println("Error header:"); 
    String field = null; 
    int i = 0; 
    do 
    { 
     field = connection.getHeaderField(i); 
     String key = connection.getHeaderFieldKey(i); 
     if (field != null) 
     { 
     println("Header " + i + ": " + (key == null ? "" : key + "=") + field); 
     } 
     i++; 
    } while (field != null); 
    println("End in error"); 
    exit(); 
    } 
} 
catch (IOException e) 
{ 
    println("Error in I/O " + e); 
    exit(); 
} 
println("Correct data:"); 
InputStream input = null; 
try 
{ 
    connection = (HttpURLConnection) url.openConnection(); 
    connection.setRequestMethod("GET"); 
    input = connection.getInputStream(); 
    String[] lines = loadStrings(input); 
    println(lines); 
} 
catch (IOException e) 
{ 
    println("Error " + e); 
} 
finally 
{ 
    if (input != null) 
    { 
    try { input.close(); } catch (IOException e) {} 
    } 
} 
exit(); 
相关问题