我正在编写一个查看托管在服务器上的文件的应用程序,如果它发生更改,则会重新加载webview。这用于跨设备复制大量网页。
我使用以下方式设置了初始网址:
private String originalURL;
private String newURL;
然后定义要在onCreate上使用的那个
originalURL = "https://www.buzzfeed.com/sallytamarkin/total-body-workouts#.moYPngWVWy";
然后我在计时器上运行异步任务:
private static String getUrlContents(String theUrl)
{
StringBuilder content = new StringBuilder();
// many of these calls can throw exceptions, so i've just
// wrapped them all in one try/catch statement.
try
{
// create a url object
URL url = new URL(theUrl);
// create a urlconnection object
URLConnection urlConnection = url.openConnection();
// wrap the urlconnection in a bufferedreader
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
String line;
// read from the urlconnection via the bufferedreader
while ((line = bufferedReader.readLine()) != null)
{
content.append(line + "\n");
}
bufferedReader.close();
}
catch(Exception e)
{
e.printStackTrace();
}
return content.toString();
}
private class BackgroundTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
// perform your network logic here
String output = getUrlContents("http://52.30.226.234/url.txt");
System.out.println("output is " + output);
newURL = output;
return "YourResult";
}
@Override
protected void onPostExecute(String result) {
// Update your screen with the results.
}
}
当我尝试比较两个字符串时,它们总是评估为不同。我尝试过match(),equals()和equalsIgnoreCase()。这是我正在使用的代码
if ((originalURL.equals(newURL))==true) {
System.out.println("SAME");
} else {
System.out.println("NOT SAME");
}
}
我还用之前定义的两个字符串对它进行了测试,它运行正常。
我只能认为这是因为特殊字符,但已经尝试了几个修复以删除特殊字符,但这也没有用。
请帮忙!
答案 0 :(得分:1)
请勿在{{1}};
中写下“true”如果您需要if-clause
:
Case-Sensitive
如果您需要if(string1.equals(string2)){
System.out.println("SAME");
}
else{
System.out.println("NOT SAME");
}
:
Case-Insensitive
如果它不符合您的要求,或者您想进行更严格的比较,请尝试使用Collator
答案 1 :(得分:-1)
可能是由于最后的网址的乱码部分。这部分经常变化。打印以查看它们是否相同。