Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android http请求读线_Java_Android_Httprequest_Bufferedreader_Readline - Fatal编程技术网

Java Android http请求读线

Java Android http请求读线,java,android,httprequest,bufferedreader,readline,Java,Android,Httprequest,Bufferedreader,Readline,我试图通过http请求读取网页的源代码。 我的目的是从结果中读取一个整数值(price) 我正在使用bufferedReader来读取行。我不清楚哪种方法可以存储我想要的数据 下面是我使用的代码: BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8") ); String data = null; String webPage = ""; while ((data = reader.readLin

我试图通过http请求读取网页的源代码。 我的目的是从结果中读取一个整数值(price)

我正在使用bufferedReader来读取行。我不清楚哪种方法可以存储我想要的数据

下面是我使用的代码:

BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8") );
String data = null;
String webPage = "";
while ((data = reader.readLine()) != null){
   webPage += data + "\n";
}
更新: 这是http请求的示例结果:

 more...<div class="price-block--grid">
                <div class="old-price-wrap">
                    <!-- begin old price -->
                    <div class="product-card__old-price">RM 1,500.00</div>
                    <!-- end old price -->
                    <!-- begin sale -->
                    <div class="product-card__sale">- 6%</div>
                    <!-- end sale -->
                </div>
                <div class="product-card__price">RM 1,408.00</div>....more
更多。。。
1500.00马来西亚令吉
- 6%
1408.00 RM…更多

我想知道我是否有办法只检索并存储数据变量的价格值(例如1408)?

如果您确定每一行都是整数,而不仅仅是创建一个整数变量或数组(如果您有多行)并将字符串解析为整数:
integer.parseInt(数据)如果变量数据中的其他字符不是数字,则可以使用正则表达式删除非数字:

data = data.replaceAll("\\D+","");

希望这能回答您的问题。

没有默认方法解析所有html并提取所需部分。您可以将网页中的所有html保存为字符串,然后使用如下代码解析字符串以获取价格:

String toFind = "product-card__price\">";
String str1 = webPage.substring(webPage.indexOf(toFind) + toFind.length());
String priceString = str1.substring(0, str1.indexOf("<"));
int price = Integer.parseInt(priceString.replaceAll("\\D+",""));
String toFind=“产品卡价格\”>;
String str1=webPage.substring(webPage.indexOf(toFind)+toFind.length());
字符串priceString=str1.substring(0,str1.indexOf(“=0”){
String-tokenString=remaingtext.substring(remaingtext.indexOf(to)+to.length());

String priceString=tokenString.substring(0,tokenString.indexOf("您的故事尚未完成。请继续。以一个问题结束。数据将存储在网页变量中。抱歉,我已更新了httpRequest的输出,httpRequest的输出将不总是整数。知道吗?我已更新了我的答案,现在检查!您可以像这样解析响应并获取价格!!嗨,Asif Mujteba,谢谢。这是真的解决我的问题,但我必须存储超过1个价格。因此,为了保存所有价格,我必须在str1之后进行另一个循环。谢谢!!这真的很有帮助。很抱歉问这么长的问题,因为我还是Android编程的初学者。很抱歉,我更新了上面的httpRequest。everyline不仅包含整数,还包含其他字符还有符号,知道吗?
String to = "product-card__price\">";
String remainingText = webPage;
ArrayList<Integer> integers = new ArrayList<>();
while (remainingText.indexOf(to) >= 0) {
    String tokenString = remainingText.substring(remainingText.indexOf(to) + to.length());
    String priceString = tokenString.substring(0, tokenString.indexOf("<"));
    int price = Integer.parseInt(priceString.replaceAll("\\D+",""));
    integers.add(price);
    remainingText = tokenString;
}