java以xml往服务器_向远程服务器传送XML文件的java代码

package com.yuchai.marketing.vehicleSCM.sendNC;

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.BufferedReader;

import java.io.ByteArrayInputStream;

import java.io.CharArrayWriter;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.OutputStreamWriter;

import java.io.Reader;

import java.net.InetAddress;

import java.net.MalformedURLException;

import java.net.ProtocolException;

import java.net.Socket;

import java.net.URL;

import java.net.URLConnection;

import java.net.UnknownHostException;

import java.util.Properties;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.parsers.ParserConfigurationException;

import org.dom4j.Document;

import org.dom4j.DocumentException;

import org.dom4j.DocumentHelper;

import org.dom4j.io.SAXReader;

import org.w3c.dom.*;

import com.yuchai.marketing.vehicleSCM.xml.builder.NCInvoiceXMLBuilder;

import com.yuchai.marketing.vehicleSCM.xml.builder.SuperBuilder;

/**

* 2006-04-04

* @author weiwei

*/

public class HttpSend {

protected URL url;

private URLConnection conn;

/**

* POST方法是向服务器传送数据,以便服务器做出相应的处理。例如网页上常用的 提交表格。

*/

public void POST(Document content) {

sendMessage(content);

}

/**

* 把xml文件写入到输出流中,从而实现想nc服务器传送数据

*

* @param content

*/

private void sendMessage(Document content) {

try {

OutputStream raw = conn.getOutputStream();

OutputStream buf = new BufferedOutputStream(raw);

OutputStreamWriter out = new OutputStreamWriter(buf);

/*

* SAXReader saxReader = new SAXReader(); Document documentFROMD =

* saxReader.read("d://try.xml");

* documentFROMD.setXMLEncoding("gb2312");

*/

// out.write(new String(content));

out.write(content.asXML());

out.flush();

out.close();

raw.close();

} catch (IOException e) {

new IOException("传送失败");

}

}

/**

* 从输入流中读取回执文件

*

* @return

*/

public Document getReceiverMessage() {

try {

InputStream raw = conn.getInputStream();

InputStream in = new BufferedInputStream(raw);

Reader reader = new InputStreamReader(in);

BufferedReader bufreader = new BufferedReader(reader);

String xmlString = "";

// 输出在后台

int c;

System.out.println("==================Beging====================");

while ((c = bufreader.read()) != -1) {

System.out.print((char) c);

xmlString += (char) c;

}

in.close();

System.out.println("===================End======================");

// 把xml字符串转换成xml文件

Document document = DocumentHelper.parseText(xmlString);

return document;

} catch (DocumentException e) {

new DocumentException("回执文件格式不合法");

} catch (IOException e) {

new IOException("无法取得回执文件");

}

return null;

}

/**

* 建立连接,并设置输出准备为true

*

* @param urlString

*/

public void openServer(String urlString) {

try {

checkHTTP(urlString);

conn = url.openConnection();

conn.setDoOutput(true);

} catch (IOException e) {

new IOException("连接服务器失败");

}

}

/**

* 存储文件

*

* @param bytes

*/

public void saveFile(Document doc) {

Element root = doc.getRootElement();

//生成的文件名可以自己命名,这里是取某个标签里的值

String filename = "d://生成的XML文件//" + "[REC]"

+ root.attributeValue("filename");

try {

OutputFormat format = OutputFormat.createPrettyPrint();

format.setEncoding("gb2312");

XMLWriter writer = new XMLWriter(

new FileWriter(new File(filename)), format);

writer.write(doc);

writer.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

/**

* 检查URL合法性

*

* @param urlString

* @throws ProtocolException

*/

protected void checkHTTP(String urlString) throws ProtocolException {

try {

URL url = new URL(urlString);

if (url == null || !url.getProtocol().toUpperCase().equals("HTTP"))

throw new ProtocolException("这不是HTTP协议");

this.url = url;

} catch (MalformedURLException m) {

throw new ProtocolException("协议格式错误");

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值