如何在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
本文介绍了如何在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(WCFTEST,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
¤cyCode=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屋!
查看全文