Java 不会 Integer.parseInt(字符串)

Java wont Integer.parseInt(string)

这是我的网站:http://daniandroid.honor.es/getAllCustomers.php 当您访问该站点时,您会看到一个简单的文本“500”。

好的。

 final ourHTTP hi = new ourHTTP();

        out_string = hi.getWebPage("http://daniandroid.honor.es/getAllCustomers.php");

getWebPage returns 字符串(内容)。

 int veriff = Integer.parseInt(out_string);

         if(veriff>1)
         {
             final_form.setText("ya");
         }

final_form 是我的 xml 文件中的 TextViewactivity_second.xml)

应用程序将崩溃。 错误:

at com.android.interval.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)

Caused by: java.lang.NumberFormatException: Invalid int: "500"
at java.lang.Integer.parse(Integer.java:375)

如果我用这个

替换out_string
out_string= "500";

一切都很好。

我的 getAllCustomers.php 文件包含(来源):

<?php
echo"500";
?>

这里也是获取内容的方法

public String getWebPage(String adress)
{
    HttpClient httpClient = new DefaultHttpClient();
    HttpGet httpGet = new HttpGet();

    InputStream inputStream = null;
    String response = null;


    try{
        URI uri = new URI(adress);
        httpGet.setURI(uri);

        HttpResponse httpResponse = httpClient.execute(httpGet);


        inputStream = httpResponse.getEntity().getContent();
        Reader reader = new InputStreamReader(inputStream, "UTF-8");
        int inChar;
        StringBuffer stringBuffer = new StringBuffer();

        while((inChar = reader.read()) != -1){

            stringBuffer.append((char)inChar);
        }

        response = stringBuffer.toString();

    }catch(ClientProtocolException e)
    {
        Log.e(adress, "error");
    }catch(IOException e)
    {
        Log.e(response, "error");
        //
    }catch(URISyntaxException e)
    {
        Log.e(response, "error"); 
    }

    return response;
    }

可能您的响应在字符串内部包含 "",只需替换 ""

就这样吧,

out_string = hi.getWebPage("http://daniandroid.honor.es/getAllCustomers.php");

if(out_string.contains("\"")) // change according to your response, if it contains other charcter
{
 out_string = out_string.replace("\"", "")
}

try
{
 int veriff = Integer.parseInt(out_string);

 if(veriff>1)
 {
  final_form.setText("ya");
 } 
}catch(NumberFormatException ex)
{
   // Handle exception
}

我建议你也处理异常,可能是如果你的响应中有其他无效字符..

对于 Java 的版本,您 运行 反对检查代码。 java.lang.Integer.parse(Integer.java:375)

粗暴地使用 Firebug 并检查响应
我看到“500”,这肯定比我预期的“500”要多。

如评论中所述:

我认为您的 HTTP 库将一些非十进制字符与输出一起传递。试试这个:

int veriff = Integer.parseInt(out_string.replaceAll("[\D]",""));

其中 [\D] 是一个正则表达式,表示任何非十进制字符。