春天的熊

jsf 请求外部url 接收xml

jsf,访问外部的一个url,例如:https://www.google.com

地址返回一个xml的文件。

<?xml version="1.0" encoding="UTF-8" ?>

- <DOCUMENTS>

- <MORELINK>

- <![CDATA[ https://xxxxxx/jsdt_cl.jsp?ChannelId=120&WithChild=0  ]]>

  </MORELINK>

- <DOCS>

- <DOC>

- <TITLE>

- <![CDATA[ 2012工作汇报   ]]>

  </TITLE>

- <LINK>

- <![CDATA[ https://xxxxxx/document_show.jsp?ChannelId=120&DocumentId=12501&PageId=1 ]]>

  </LINK>

  <TIME>2012-03-21 10:43:24</TIME>

  </DOC>

-   </DOCS>

  </DOCUMENTS>

 

 

使用的servlet建立连接请求的方式,获得响应信息。简单实现代码如下。

String URL_ = "https://xxxxx/newsxml.xml";
  HttpURLConnection conn = null;
    try {
   conn = (HttpURLConnection) new URL(URL_).openConnection();
   if (conn == null) {
    System.out.println("连接失败!");
   }
   conn.addRequestProperty("content-type", "text/xml;charset=utf-8");
   conn.setDoInput(true);
   conn.setDoOutput(true);
   BufferedInputStream   bin=null;

   InputStream inStream = conn.getInputStream();
   bin= new   BufferedInputStream(inStream);
   int   len   =   bin.available();
            System.out.println( "len: "   +   len);
            byte[]   tmp   =   new   byte[len];
            bin.read(tmp);
            System.out.println( "return   value: "   +   new   String(tmp,"utf-8"));

     } catch (MalformedURLException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }

 

最后成功打印。然后推送前端显示即可。

                                                                     ---------------------------------Leon

 

 

之前用jquery调用实现过,再访问iis发布的页面能加载。但是到了实际的环境中,jsp页面返回,需要认证,需要调用两个页面就没有应答了。下面也附上代码供其他用:

 

$(document).ready(function(){

//javascript建立请求连接,访问第一个地址

var xmlrequest;

//对于Firefox和Opera等浏览器

if (window.XMLHttpRequest) {

xmlrequest = new XMLHttpRequest();

}

else {

var MSXML=['Msxml2.XMLHTTP.7.0','Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];

for (var i=0;i<MSXML.length;i++) {

try {

xmlrequest = new ActiveXObject(MSXML[i]);

break;

}

catch (ex) {

// alert("Cannot create http request");

}

}

}

 xmlrequest.open("GET", "https://xxx.com", true);
 xmlrequest.send("leon");
//alert(xmlrequest.readyState);
 
 ///////////------------------------
 //调用数据输出的地址

  $.ajax({
type: "get",
url: "https://xxxxxx/newsxml.xml",
beforeSend: function(XMLHttpRequest){
$("#axjaresult").html("load......");//输出到页面一个信息
},
dataType:"html"
,
success:function(data, textStatus){
var xml;

if (typeof data =="string") {
xml = new ActiveXObject("Microsoft.XMLDOM");
xml.async = false;
xml.loadXML(data);
} else {
xml = data;
};

var morelink=$(xml).find("MORELINK").text();

var s="";
$(xml).find("DOC").each(function(i){

var titletext=$(this).children("TITLE").text();
var linktext =$(this).children("LINK").text();
var timetext =$(this).children("TIME").text();
//组装显示的信息
s+="<div style='margin-top:4px;'><div class='info_images' style='margin-top:4px;'></div>"+
"<div style='height:21px;border-bottom:1px dotted;'><a target=_blank href='"+linktext+"'>"+
"<div style='float:left;width:200px;overflow: hidden; text-overflow:ellipsis;cursor: pointer;'>"+
"<nobr><span title="+titletext+">"+titletext+"</span></nobr></div><div >"+timetext.substring(0,11)+"</div></a></div></div> ";
if(i==5){return false;}
});
 $("#axjaresult").html(s);//作用页面
},
complete: function(XMLHttpRequest, textStatus){
//HideLoading();
},
error: function(){
//请求出错处理
}
});
 

 //------
 
 });
 
//----------------

   
评论
热度(2)