APIからXMLデータを取り込みしようとしていますが、Nullを取得しようとしています。私はstackoverflowからいくつかのソリューションを試して、これは私の最新の反復です。ボタンを押した後にXMLデータがアプリケーションに取り込まれないのはなぜですか?エラーメッセージは表示されません。私はこれを2つのクラスに分けました。 1つのクラスはUIを持ち、ユーザーが入力した文字列をURL用に適切にフォーマットされた2つのフィールドに分け、AsyncTaskを持っています。他のクラスはURLインスタンスを持ち、実行されます。Android:アプリケーションで表示するXMLデータをダウンロードするNullを取得する
私は私が最終的に1のprintlnを試してみましたが、コンソールから、それをクリックし、それが適切なXMLに行ったとしてURLが正しく書式設定されて知っています。
GetProperty.java:
public class GetProperty {
public String address;
//URL with ZWSID
public static final String myURL = "http://www.zillow.com/webservice/GetDeepSearchResults.htm?zws-id=[REMOVED ID]";
public String finalUrl;
String line;
private static final boolean DEBUG = true;
public GetProperty(String address) {
this.address = address;
finalUrl = myURL + address;
System.out.println("The FINAL URL string is: " + finalUrl);
line = "";
}
public void load() throws MalformedURLException, IOException
{
//Create URL with address from above
URL url = new URL(finalUrl);
//URLConnection connection = url.openConnection();
InputStream stream = url.openStream();
BufferedReader br;
try
{
br = new BufferedReader(new InputStreamReader(stream));
// consume any data remaining in the input stream
while (br.readLine() != null) {
line = line + br.readLine(); }
br.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
public String getLine() {
return line;
}
}
ここコードで私が使用したテストアドレス(:2114ビゲローアヴェ/ ZIP 98109通りの)でした
MainActivity.java:
public class MainActivity extends AppCompatActivity {
EditText getStreetET;
EditText getZipET;
Button getInfoBTN;
TextView xmlTextView;
String streetAddress;
String zipAddress;
String userAddress;
GetProperty property;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getStreetET = (EditText) findViewById(R.id.editText);
getZipET = (EditText) findViewById(R.id.editText2);
xmlTextView = (TextView) findViewById(R.id.textView);
getInfoBTN = (Button) findViewById(R.id.button);
//Get information about address user typed in edit text when BUTTON is clicked
getInfoBTN.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
//Get text from user and change it to a string
streetAddress = getStreetET.getText().toString();
//Add a + sign wherever there is a space in the street address
streetAddress = streetAddress.replaceAll(" ", "+");
//adding &address= for the URL
streetAddress = "&address=" + streetAddress;
zipAddress = "&citystatezip=" + getZipET.getText().toString();
//Combine street & zip into one string address
userAddress = streetAddress + zipAddress;
System.out.println("The user address without the URL is: " + userAddress);
//Make sure the user actually typed something
if(!containsWhiteSpace(userAddress)) {
getAddressInfoTask addressTask = new getAddressInfoTask();
addressTask.execute(userAddress);
}
//Test if user typed in correct address?
else {
xmlTextView.setText("");
}
}
});
}
public static boolean containsWhiteSpace(String userAddress) {
if (!hasLength(userAddress)) {
return false;
}
int strLen = userAddress.length();
for (int i = 0; i < strLen; i++) {
if (Character.isWhitespace(userAddress.charAt(i))) {
return true;
}
}
return false;
}
public static boolean hasLength(String userAddress) {
return (userAddress != null && userAddress.length() > 0);
}
//AsyncTask for separate thread due to internet connection
private class getAddressInfoTask extends AsyncTask<String, Void, GetProperty>
{
protected GetProperty doInBackground(String... params)
{
property = new GetProperty(userAddress);
try
{
property.load();
}
catch (IOException e)
{
e.printStackTrace();
}
return property;
}
protected void onPostExecute(GetProperty property)
{
//Place the XML in the TextView
xmlTextView.setText(property.getLine());
}
}
}
ブレークポイントでデバッグを試しましたか? – Raghunandan
このツールを使用してXMLを表示しようとしました:https://codebeautify.org/xmlviewer(URLからロード)。それは言う: "エラー:無効または市/州/ ZIPパラメータが無効または不足"(コード:501)ので、問題があなたのリンクにある –