AndroidでHTTP Getメソッドを使用してURLからXMLファイルを取得しようとしています。ブラウザにURLを入力すると、XMLファイルが取得されます。しかし、AndroidでHttpURLConnectionを試してみると、入力ストリームは常にnullになります。私は問題を理解しようとしていますが、無駄です。私はこの問題を理解する助けをしたいと思います。ここ
は私のコードです:
XMLファイルAndroidのURLからXMLを取得するとnullエラーが表示される
<?xml version="1.0" encoding="UTF-8"?>
<item>
<log>27.1823000000</log>
<lat>88.5012200000</lat>
</item>
非同期タスク
private class GetOnlineData extends AsyncTask<Void, Void, String>{
@Override
protected String doInBackground(Void... voids){
String latlog=null;
// Accessing link to obtain XML file
try{
URL url = new URL(link);
HttpURLConnection htc = (HttpURLConnection) url.openConnection();
inputStream = htc.getInputStream();
}catch(Exception e){}
// Parsing XML data from input stream
if(inputStream!=null){
try {
DocumentBuilderFactory xmlparser = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = xmlparser.newDocumentBuilder();
Document dc = dBuilder.parse(inputStream);
Element ele = dc.getDocumentElement();
ele.normalize();
NodeList nodeList = dc.getElementsByTagName("item");
for (int i=0; i<nodeList.getLength(); i++){
Node node = nodeList.item(i);
if(node.getNodeType() == Node.ELEMENT_NODE){
Element ele2 = (Element) node;
latlog = "Longitude: "+getValue("log",ele2)+"\n";
latlog += "Latitude: "+getValue("lat",ele2);
}
}
} catch (Exception e){
e.printStackTrace();
}
}
return latlog;
}
@Override
protected void onPostExecute(String latlog){
if(inputStream==null) {
Toast.makeText(getApplicationContext(), "Didn't Work", Toast.LENGTH_SHORT).show();
} else {
textView.setText(latlog);
}
}
}
のgetValue(文字列、要素)
private static String getValue(String tag, Element element) {
NodeList nodeList = element.getElementsByTagName(tag).item(0).getChildNodes();
Node node = nodeList.item(0);
return node.getNodeValue();
}
XMLはJSONに切り替えるのにはちょっと古い方法ですか?シンプルでいい# –
そのために、_python-cgi-script_を使って_json_オブジェクトを送る方法を知る必要があります。あなたはそれを行う方法についてまともなチュートリアルを私に指摘できますか?それは本当に役立つだろう。 @teckwei – dannyBoy
うーん..私はサーバー側のPHPを使用しています。私はあなたがグーグルかもしれないと思う。 –