【发布时间】:2011-05-26 22:47:40
【问题描述】:
我正在尝试读取被推送到我的 java 应用程序的 XML。我最初在我的 glassfish 服务器上工作。 glassfish中的工作代码如下:
public class XMLPush implements Serializable
{
public void processXML()
{
StringBuilder sb = new StringBuilder();
BufferedReader br = null;
try
{
br = ((HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest()).getReader ();
String s = null;
while((s = br.readLine ()) != null)
{
sb.append ( s );
}
//other code to process xml
...........
.............................
}catch(Exception ex)
{
XMLCreator.exceptionOutput ( "processXML","Exception",ex);
}
....
.....
}//processXML
}//class
它运行良好,但我的客户无法在他们的服务器上安装 glassfish。我尝试从 php 中获取原始 xml,但无法正常工作。我决定打开一个套接字并手动监听 xml 推送。这是我接收推送的代码:
public class ListenerService extends Thread
{
private BufferedReader reader = null;
private String line;
public ListenerService ( Socket connection )thows Exception
{
this.reader = new BufferedReader ( new InputStreamReader ( connection.getInputStream () ) );
this.line = null;
}//ListenerService
@Override
public void run ()
{
try
{
while ( (this.line = this.reader.readLine ()) != null)
{
System.out.println ( this.line );
........
}//while
} System.out.println ( ex.toString () );
}
} catch ( Exception ex )
{
...
}//catch
}//run
我没有做过太多的套接字编程,但从我上周读到的内容来看,将 xml 传递给字符串是不好的。我做错了什么,为什么在 glassfish 服务器中它可以工作,而当我自己打开一个套接字时却没有?
这就是我从推送中收到的全部内容:
PUT /?XML_EXPORT_REASON=ResponseLoop&TIMESTAMP=1292559547 HTTP/1.1
Host: ************************
Accept: */*
Content-Length: 470346
Expect: 100-continue
<?xml version="1.0" encoding="UTF-8" ?>
xml 去哪儿了?是因为我将它放在一个字符串中吗?我只需要抓取 xml 并将其保存到文件中然后处理它。其他一切都有效,但这个。任何帮助将不胜感激。
【问题讨论】:
标签: java xml sockets glassfish inputstream