[英]Java Http Server- How to read xml file on server which is sent from client
I have created HTTP server in Java, and tested posting plain string and received response successfully, but I don't know how to read the file on Server-Side which i posted from client side, I tried BuffuredReader and InputStream code but the browser keeps on loading my page and shows nothing. 我已经用Java创建了HTTP服务器,并测试了发布纯字符串并成功接收到响应,但是我不知道如何读取我从客户端发布的服务器端文件,我尝试了BuffuredReader和InputStream代码,但浏览器保持在加载我的页面时,什么也没显示。
Server Side Code : 服务器端代码:
public class Server {
public static void main(String[] args) throws Exception {
HttpServer server = HttpServer.create(new InetSocketAddress(8080), 0);
server.createContext("/ahmer", new MyHandler());
server.setExecutor(null);
server.start();
} }
static class MyHandler implements HttpHandler {
@Override
public void handle(HttpExchange t) throws IOException {
String response = "Success";
t.sendResponseHeaders(200, response.length());
OutputStream os = t.getResponseBody();
os.write(response.getBytes());
os.close();
}
}
} }
Client Side Code : 客户端代码:
URL url = new URL("http://localhost:8080/ahmer");
HttpURLConnection con = (HttpURLConnection)url.openConnection();
String document = "C:\\ahmer.xml";
FileReader fr = new FileReader(document);
// specify that we will send output and accept input
con.setDoInput(true);
con.setDoOutput(true);
char[] buffer = new char[1024*10];
int b_read = 0;
con.setRequestProperty ( "Content-Type", "text/xml" );
con.setRequestProperty("SOAPAction","MSMQMessage");
con.setRequestProperty("Proxy-Accept","NonInteractiveClient" );
con.setRequestProperty("CONNECTION", "close");
con.setRequestProperty("CACHE-CONTROL", "no-cache");
con.setRequestProperty("USER-AGENT", "OpenTV-iAdsResponder_1_0");
OutputStreamWriter writer = new OutputStreamWriter( con.getOutputStream() );
while ((b_read = fr.read(buffer)) != -1) {
writer.write(buffer, 0, b_read);
}
writer.flush();
writer.close();
fr.close();
int i = con.getResponseCode();
rs=String.format("Response code: %d",i);
HttpClient client = new DefaultHttpClient();
HttpGet requests = new HttpGet("http://localhost:8080/ahmer");
HttpResponse rss = client.execute(requests);
String responseAsString = EntityUtils.toString(rss.getEntity());
con.disconnect();
Here is my code to read the xml file sent from client to server. 这是我的代码,用于读取从客户端发送到服务器的xml文件。
static class MyHandler implements HttpHandler {
@Override
public void handle(HttpExchange t) throws IOException {
InputStream xml = t.getRequestBody();
final char[] buffer = new char[1024];
final StringBuilder out = new StringBuilder();
try (Reader in = new InputStreamReader(xml, "UTF-8")) {
for (;;) {
int rsz = in.read(buffer, 0, buffer.length);
if (rsz < 0)
break;
out.append(buffer, 0, rsz);
}
}
catch (UnsupportedEncodingException ex) {
/* ... */
}
catch (IOException ex) {
/* ... */
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.