如何在android中将xml数据发布到服务器

dar*_*991 2 xml android

因为我是android的新手请给我链接教程在服务器上发布xml数据.我面临的问题是执行post请求

public void uploadFileToServer()
 {
      DefaultHttpClient httpClient = new DefaultHttpClient();
      HttpPost httppost = new HttpPost(url_context + "/orders/order"); 
      httppost.addHeader("Accept", "text/xml");
      httppost.addHeader("Content-Type", "application/xml");
      try
      {
          StringEntity entity = new StringEntity(xmlString, "UTF-8");
          entity.setContentType("application/xml");
          httppost.setEntity(entity);
          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();
                    }
             }

      }
      catch (Exception ex)
      {
                 ex.printStackTrace();
      }
 }
Run Code Online (Sandbox Code Playgroud)

Shi*_*jil 5

基于此示例来抓取您的xml文件

DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder docBuilder = docFactory.newDocumentBuilder();

    // root elements
    Document doc = docBuilder.newDocument();
    Element rootElement = doc.createElement("Order");
    doc.appendChild(rootElement);

    //set attribute to class
    Attr Rattr = doc.createAttribute("Order_atrribute");
    Rattr.setValue(curtrade);
    rootElement.setAttributeNode(Rattr);

        // companyid elements
        Element staff = doc.createElement("companyid");
        rootElement.appendChild(staff);
        // shorten way
        // staff.setAttribute("id", "1");

        // firstname elements
        Element firstname = doc.createElement("orderitems");
        firstname.appendChild(doc.createTextNode("hii"));
        staff.appendChild(firstname);
Run Code Online (Sandbox Code Playgroud)

并将内容写入xml文件

TransformerFactory transformerFactory = TransformerFactory.newInstance();
    Transformer transformer = transformerFactory.newTransformer();
    DOMSource source = new DOMSource(doc);
    StreamResult result = new StreamResult(new File(this.getFilesDir().getAbsolutePath(),"file.xml"));
    //String s=this.getFilesDir().getAbsolutePath();
    // Output to console for testing
    //StreamResult result = new StreamResult(System.out);
    transformer.transform(source, result);
Run Code Online (Sandbox Code Playgroud)

发布你的文件

DefaultHttpClient httpClient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost(url_context + "/orders/order.php");
    String filePath = this.getFilesDir().getAbsolutePath();
    File f=new File(filePath,"file.xml");
    //byte[] data = FileOperator.readBytesFromFile(f);
    String content=getFileContents(f);
    StringEntity se = new StringEntity( content, HTTP.UTF_8);
    se.setContentType("text/xml");
    httppost.setEntity(se);
    f.delete();
    HttpResponse httpresponse = httpClient.execute(httppost);
    Log.d("xml1", httpresponse.toString());
    HttpEntity resEntity = httpresponse.getEntity();
    Log.d("xml2", resEntity.toString());
    String result1 = EntityUtils.toString(resEntity);
    Log.d("xml", "writer = "+result1);
Run Code Online (Sandbox Code Playgroud)

methode getFileContent是

public String getFileContent(final File file) throws IOException {
    final InputStream inputStream = new FileInputStream(file);
    final BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
    final StringBuilder stringBuilder = new StringBuilder();

    boolean done = false;  
    while (!done) {
        final String line = reader.readLine();
        done = (line == null);

        if (line != null) {
            stringBuilder.append(line);
        }
    }
    reader.close();
    inputStream.close();

    return stringBuilder.toString();
}
Run Code Online (Sandbox Code Playgroud)

参考