【问题标题】:how to consume data in rest api that returns xml data in android如何使用在android中返回xml数据的rest api中的数据
【发布时间】:2015-06-25 04:58:07
【问题描述】:

请任何人都可以告诉如何在返回xml数据的android中使用rest APIJSON的例子太多了。但我需要以xml格式回复.. .谁能告诉我该怎么做,请帮助我提前谢谢。

【问题讨论】:

  • 必须尝试Volley
  • 这是什么?我是初学者
  • 网络通讯库
  • 我传递字符串学校 id 以将数据作为学校名称返回。但出现异常,这是我的代码
  • 你的代码在哪里?

标签: android api rest


【解决方案1】:

你可以试试这样的

private class CallAPI extends AsyncTask<String, String, String> {



    @Override
    protected String doInBackground(String... params) {
      String urlString=params[0]; // URL to call
      String schid="";
      String resultToDisplay = "";
      InputStream in = null;
      Result result = null ;


      // HTTP Get
      try {
        URL url = new URL(urlString);
        HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
        in = new BufferedInputStream(urlConnection.getInputStream());
        //resultToDisplay +="&" + URLEncoder.encode("data", "UTF-8") ; 
      } catch (Exception e ) {
        System.out.println(e.getMessage());
        return e.getMessage();
      }

       // Parse XML
       XmlPullParserFactory pullParserFactory;
       try {
            pullParserFactory = XmlPullParserFactory.newInstance();
            XmlPullParser parser = pullParserFactory.newPullParser();
            parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false); 
            parser.setInput(in, null);
            result = parseXML(parser);
       } catch (XmlPullParserException e) {
           e.printStackTrace();
       } catch (IOException e) {
           e.printStackTrace();
       }

       // Simple logic to determine if the email is dangerous, invalid, or valid
       if (result != null ) {
         if( result.hygieneResult.equals("Spam Trap")) {
           resultToDisplay = "Dangerous, please correct";
         }
         else if( Integer.parseInt(result.statusNbr) >= 300) {
           resultToDisplay = "Invalid, please re-enter";
         }
         else {
           resultToDisplay = "Thank you for your submission";
         }

       }
       else {
         resultToDisplay = "Exception Occured";
       }

       return resultToDisplay;

    }

    protected void onPostExecute(String schid) {
        if(schid == null) {
            schid = "THERE WAS AN ERROR";
        }
        Intent intent = new Intent(getApplicationContext(), ResultActivity.class); 
        intent.putExtra(EXTRA_MESSAGE, schid);
        startActivity(intent);
    }

    private Result parseXML( XmlPullParser parser ) throws XmlPullParserException, IOException {
      int eventType = parser.getEventType();
      Result result = new Result(); 

      while( eventType!= XmlPullParser.END_DOCUMENT) {
      String strid = null;
      switch(eventType)
      {
        case XmlPullParser.START_TAG:
            strid = parser.toString();
            //name=parser.getName();
          if( strid.equals("Error")) {
            System.out.println("Web API Error!");
          }
          else if ( strid.equals("StatusNbr")) {
            result.statusNbr = parser.nextText();
          }
          else if (strid.equals("HygieneResult")) {
            result.hygieneResult = parser.nextText();
          }
          break;
        case XmlPullParser.END_TAG:
          break;
        } // end switch

        eventType = parser.next();  
      } // end while
        return result;      
     }


} // end CallAPI

现在在你的活动中

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

// This is the method that is called when the submit button is clicked
public void verifyDetails(View view) {
    EditText schidEditText = (EditText) findViewById(R.id.sch_id);
    String schid = schidEditText.getText().toString();

    if( schid != null && !schid.isEmpty()) {
        String urlString = apiURL + "schid:" + schid.toString();
        //String urlString = apiURL + "LicenseInfo.RegisteredUser.UserID=" + strikeIronUserName + "&LicenseInfo.RegisteredUser.Password=" + strikeIronPassword + "&VerifyEmail.Email=" + email + "&VerifyEmail.Timeout=30";
      new CallAPI().execute(urlString); 
    }   




}



}

【讨论】:

    【解决方案2】:

    您需要使用 DocumentBuilderFactory 来使用 Java 解析 XML

    你可以在那个地方找到一个很好的教程XML and Java - Parsing XML using Java

    【讨论】:

      【解决方案3】:
      猜你喜欢
      • 1970-01-01
      • 2017-09-02
      • 2021-10-18
      • 1970-01-01
      • 1970-01-01
      • 2020-03-17
      • 1970-01-01
      • 1970-01-01
      • 2016-06-13
      相关资源
      最近更新 更多