2015-08-20 88 views
0

这是我的网站:http://daniandroid.honor.es/getAllCustomers.php 当您访问该网站时,您会得到一个简单的文本“500”。Java不会Integer.parseInt(字符串)

好的。

final ourHTTP hi = new ourHTTP(); 

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

getWebPage返回字符串(内容)。

int veriff = Integer.parseInt(out_string); 

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

final_form是我的xml文件(activity_second.xml)一TextView的

应用程序会崩溃。 错误:

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= "500"; 

一切更换out_string好。

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; 
    } 
+0

您是否可能从PHP文件而不是预期的字符串文字返回“”500“”? – andrewdleach

+0

如果您访问该网站,将出现500,同样如果您查看页面源,它​​将出现500 –

+0

尝试'Integer.parseInt(out_string.replaceAll(“[\\ D]”,“”));'。我认为你的HTTP库传递了一些非十进制字符和输出。 – iTurki

回答

1

正如在评论中讨论:

我觉得你的HTTP lib中通过一些非十进制字符与输出一起。试试这个:

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

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

+0

谢谢。有效。 –

+0

Yupp ..很好的.. +1。还需要处理垃圾人物。 – user370305

1

有可能通过你的响应包含""内部的字符串,只需更换""

所以不喜欢它,

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 
} 

我建议你来处理异常也可以,如果你在你的Resposnse中有其他无效字符。

+0

仍然是同样的错误。 –

+0

@Aakash - 比原因是什么?在做downvote之前,请仔细阅读问题,OP得到500 .. – user370305

0

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

粗略地使用Firebug检查该响应
我看到“我»¿500" ,这是肯定比‘500’我本来期望更多。

相关问题