如何在Android中使用HTTP POST发送XML文件。当我把XML文件中的code [英] How to send an xml file using http post in android. Where i put the xml files in the code

查看:119
本文介绍了如何在Android中使用HTTP POST发送XML文件。当我把XML文件中的code的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要使用HTTP POST在Android中发送XML文件。我是新来这个。当我把XML在Android和如何将它使用code发送。

的XML的样品看起来像这样

  http://api.ean.com/ean-services/rs/hotel/v3/list?
    minorRev = [当前minorRev#]
    &功放; CID = 55505
    &功放; apiKey = [XXX-yourOwnKey-XXX]
    &功放; customerUserAgent = [XXX]
    &功放; customerIpAddress = [XXX]
    &功放;区域设置= EN_US
    &功放;货币code = USD
    &功放; XML =
    < HotelListRequest>
    <城市>西雅图< /城市>
    < stateProvince code取代; WA< / stateProvince code取代;
    <国家code>美国< /国家code取代;
    < arrivalDate&GT 08/01/2012< / arrivalDate>
    < departureDate> 8月3日/ 2012< / departureDate>
    < RoomGroup>
    <房间>
    &其中; numberOfAdults→2&其中; / numberOfAdults>
     < /房>
     < / RoomGroup>
     &其中; numberOfResults→1&其中; / numberOfResults>
         < supplierCacheTolerance> MED_ENHANCED< / supplierCacheTolerance>
         < / HotelListRequest>
 

解决方案

创建XML文件

 的DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance();
 dbfac.setNamespaceAware(真正的);
 DocumentBuilder的docBuilder = NULL;
 尝试 {
    docBuilder = dbfac.newDocumentBuilder();
}赶上(的ParserConfigurationException E){
    // TODO自动生成的catch块
    e.printStackTrace();
}
 DOMImplementation的domImpl = docBuilder.getDOMImplementation();
 文档DOC = domImpl.createDocument(http://coggl.com/InsertTrack,TrackEntry,NULL);
 doc.setXmlVersion(1.0);
 doc.setXmlStandalone(真正的);

 元件trackElement = doc.getDocumentElement();

 元件CompanyId = doc.createElement(CompanyId);
 CompanyId.appendChild(doc.createTextNode(1));
 trackElement.appendChild(CompanyId);

 元件CreatedBy = doc.createElement(CreatedBy);
 CreatedBy.appendChild(doc.createTextNode(6));
 trackElement.appendChild(CreatedBy);

 元件DepartmentID的= doc.createElement(DepartmentID的);
 DepartmentId.appendChild(doc.createTextNode(4));
 trackElement.appendChild(DepartmentID的);

 元件IsBillable = doc.createElement(IsBillable);
 IsBillable.appendChild(doc.createTextNode(1));
 trackElement.appendChild(IsBillable);

 元件ProjectId = doc.createElement(ProjectId);
 ProjectId.appendChild(doc.createTextNode(1));
 trackElement.appendChild(ProjectId);

 元件开始时间= doc.createElement(开始时间);
 StartTime.appendChild(doc.createTextNode(2012年3月14日10点44分45秒));
 trackElement.appendChild(开始时间);

 元件停止时间= doc.createElement(停止时间);
 StopTime.appendChild(doc.createTextNode(2012年3月14日11时44分45秒));
 trackElement.appendChild(停止时间);

 元件的TaskID = doc.createElement(TASKID);
 TaskId.appendChild(doc.createTextNode(3));
 trackElement.appendChild(任务id);

 元件TotalTime = doc.createElement(TotalTime);
 TotalTime.appendChild(doc.createTextNode(1));
 trackElement.appendChild(TotalTime);

 元件TrackDesc = doc.createElement(TrackDesc);
 TrackDesc.appendChild(doc.createTextNode(检测报));
 trackElement.appendChild(TrackDesc);

 元件的TrackID = doc.createElement(的TrackID);
 TrackId.appendChild(doc.createTextNode(0));
 trackElement.appendChild(的TrackID);

 的TransformerFactory TRANSFAC = TransformerFactory.newInstance();
 变压器反式=无效;
尝试 {
    反式= transfac.newTransformer();
}赶上(TransformerConfigurationException E){
    // TODO自动生成的catch块
    e.printStackTrace();
}
 trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,是);
 trans.setOutputProperty(OutputKeys.INDENT,是);

 //创建XML树字符串
 StringWriter的SW =新的StringWriter();
 StreamResult结果=新StreamResult(SW);
 DOMSource的源=新DOMSource的(文件);
 尝试 {
    trans.transform(源,结果);
}赶上(TransformerException中五){
    // TODO自动生成的catch块
    e.printStackTrace();
}
 串的xmlString = sw.toString();

//发布XML文件服务器

 DefaultHttpClient的HttpClient =新DefaultHttpClient();

 HttpPost httppost =新HttpPost(http://192.168.0.19:3334/cogglrestservice.svc/InsertTrack);
 //确保服务器知道什么样的回应,我们将接受
 httppost.addHeader(接受,为text / xml);
 //此外,一定要告诉什么样的内容,我们发送服务器
 httppost.addHeader(内容类型,应用程序/ XML);

 尝试
 {
 StringEntity实体=新StringEntity(的xmlString,UTF-8);
 entity.setContentType(应用程序/ XML);
 httppost.setEntity(实体);

 //执行是一个阻塞调用,最好把这种code在一个线程从用户界面的分离
 HTT presponse响应= httpClient.execute(httppost);

 BasicResponseHandler ResponseHandler的=新BasicResponseHandler();
    字符串strResponse = NULL;
    如果(响应!= NULL){
        尝试 {
            strResponse = responseHandler.handleResponse(响应);
        }赶上(Htt的presponseException E){
            e.printStackTrace();
        }赶上(IOException异常E){
            e.printStackTrace();
        }
    }
    Log.e(WCF​​TEST,WCFTEST **********响应+ strResponse);


 }
 赶上(例外前)
 {
 ex.printStackTrace();
 }
 Toast.makeText(EditTask.thisXML成功地贴,Toast.LENGTH_SHORT).show();
 

I need to send an xml file using http post in android. I am new to this. Where i put the xml in the android and how to send it using the code.

The sample of the xml looks like this

http://api.ean.com/ean-services/rs/hotel/v3/list?
    minorRev=[current minorRev #]
    &cid=55505
    &apiKey=[xxx-yourOwnKey-xxx]
    &customerUserAgent=[xxx]
    &customerIpAddress=[xxx]
    &locale=en_US
    &currencyCode=USD
    &xml=
    <HotelListRequest>
    <city>Seattle</city>
    <stateProvinceCode>WA</stateProvinceCode>
    <countryCode>US</countryCode>
    <arrivalDate>08/01/2012</arrivalDate>
    <departureDate>08/03/2012</departureDate>
    <RoomGroup>
    <Room>
    <numberOfAdults>2</numberOfAdults>
     </Room>
     </RoomGroup>
     <numberOfResults>1</numberOfResults>
         <supplierCacheTolerance>MED_ENHANCED</supplierCacheTolerance>
         </HotelListRequest>

解决方案

Creating xml file

DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance();
 dbfac.setNamespaceAware(true);
 DocumentBuilder docBuilder = null;
 try {
    docBuilder = dbfac.newDocumentBuilder();
} catch (ParserConfigurationException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
 DOMImplementation domImpl = docBuilder.getDOMImplementation();
 Document doc = domImpl.createDocument("http://coggl.com/InsertTrack","TrackEntry", null);
 doc.setXmlVersion("1.0");
 doc.setXmlStandalone(true);

 Element trackElement = doc.getDocumentElement();

 Element CompanyId = doc.createElement("CompanyId");
 CompanyId.appendChild(doc.createTextNode("1"));
 trackElement.appendChild(CompanyId);

 Element CreatedBy = doc.createElement("CreatedBy");
 CreatedBy.appendChild(doc.createTextNode("6"));
 trackElement.appendChild(CreatedBy);

 Element DepartmentId = doc.createElement("DepartmentId");
 DepartmentId.appendChild(doc.createTextNode("4"));
 trackElement.appendChild(DepartmentId);

 Element IsBillable = doc.createElement("IsBillable");
 IsBillable.appendChild(doc.createTextNode("1"));
 trackElement.appendChild(IsBillable);

 Element ProjectId = doc.createElement("ProjectId");
 ProjectId.appendChild(doc.createTextNode("1"));
 trackElement.appendChild(ProjectId);

 Element StartTime = doc.createElement("StartTime");
 StartTime.appendChild(doc.createTextNode("2012-03-14 10:44:45"));
 trackElement.appendChild(StartTime);

 Element StopTime = doc.createElement("StopTime");
 StopTime.appendChild(doc.createTextNode("2012-03-14 11:44:45"));
 trackElement.appendChild(StopTime);

 Element TaskId = doc.createElement("TaskId");
 TaskId.appendChild(doc.createTextNode("3"));
 trackElement.appendChild(TaskId);

 Element TotalTime = doc.createElement("TotalTime");
 TotalTime.appendChild(doc.createTextNode("1"));
 trackElement.appendChild(TotalTime);

 Element TrackDesc = doc.createElement("TrackDesc");
 TrackDesc.appendChild(doc.createTextNode("dello testing"));
 trackElement.appendChild(TrackDesc);

 Element TrackId = doc.createElement("TrackId");
 TrackId.appendChild(doc.createTextNode("0"));
 trackElement.appendChild(TrackId);

 TransformerFactory transfac = TransformerFactory.newInstance();
 Transformer trans = null;
try {
    trans = transfac.newTransformer();
} catch (TransformerConfigurationException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
 trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
 trans.setOutputProperty(OutputKeys.INDENT, "yes");

 //create string from xml tree
 StringWriter sw = new StringWriter();
 StreamResult result = new StreamResult(sw);
 DOMSource source = new DOMSource(doc);
 try {
    trans.transform(source, result);
} catch (TransformerException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
 String xmlString = sw.toString();

//posting xml file to server

 DefaultHttpClient httpClient = new DefaultHttpClient();

 HttpPost httppost = new HttpPost("http://192.168.0.19:3334/cogglrestservice.svc/InsertTrack");     
 // Make sure the server knows what kind of a response we will accept
 httppost.addHeader("Accept", "text/xml");
 // Also be sure to tell the server what kind of content we are sending
 httppost.addHeader("Content-Type", "application/xml");

 try
 {
 StringEntity entity = new StringEntity(xmlString, "UTF-8");
 entity.setContentType("application/xml");
 httppost.setEntity(entity);

 // execute is a blocking call, it's best to call this code in a thread separate from the ui's
 HttpResponse response = httpClient.execute(httppost);

 BasicResponseHandler responseHandler = new BasicResponseHandler();
    String strResponse = null;
    if (response != null) {
        try {
            strResponse = responseHandler.handleResponse(response);
        } catch (HttpResponseException e) {
            e.printStackTrace();  
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    Log.e("WCFTEST", "WCFTEST ********** Response" + strResponse);    


 }
 catch (Exception ex)
 {
 ex.printStackTrace();
 }
 Toast.makeText(EditTask.this, "Xml posted succesfully.",Toast.LENGTH_SHORT).show();

这篇关于如何在Android中使用HTTP POST发送XML文件。当我把XML文件中的code的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆