Android:显示来自服务器的验证码

Android:显示来自服务器的验证码,android,httpclient,captcha,Android,Httpclient,Captcha,对于我的应用程序,我需要使用验证码进行验证。我正在为此使用此链接: 它返回如下字符串:/webservices/simple php captcha.php?\u captcha&t=0.59145200+1338304461 那么应该调用该链接,即: 当我使用同一个HttpClient调用它时(因此使用正确的会话cookie),它会给出以下错误: java.lang.IllegalArgumentException: Illegal character in query at index 94

对于我的应用程序,我需要使用验证码进行验证。我正在为此使用此链接:

它返回如下字符串:/webservices/simple php captcha.php?\u captcha&t=0.59145200+1338304461

那么应该调用该链接,即:

当我使用同一个HttpClient调用它时(因此使用正确的会话cookie),它会给出以下错误:

java.lang.IllegalArgumentException: Illegal character in query at index 94: http://vocublablair.nl/webservices/simple-php-captcha.php?_CAPTCHA&t=0.59145200+1338304461

最好的方法是生成您自己的验证码图像,因为使用第三方资源可能会给您的客户带来不便。 要在android中生成capthcha,您可以使用以下简单库:

我通过以下操作解决了问题:

首先,我得到的链接必须使用以下HTML编码:

Html.fromHtml(String)
调用正确的URL:

content = sb.toString(); //the fetched link
String myCookie = "";
//get session cookie from other call.

List<Cookie> cookies = ((DefaultHttpClient)httpClient).getCookieStore().getCookies();
for(Cookie c : cookies){
if(c.getName().equals("PHPSESSID")){
    myCookie = c.getName() + "=" + c.getValue();
    break;
   }
   }

URL url = new URL(Html.fromHtml("http://vocublablair.nl" + content).toString());
URLConnection connection = url.openConnection();
connection.setDoInput(true);
connection.setRequestProperty("Cookie", myCookie);
connection.connect();
Bitmap bit = BitmapFactory.decodeStream(new FlushedInputStream((InputStream) connection.getContent()));
content=sb.toString()//获取的链接
字符串myCookie=“”;
//从其他调用获取会话cookie。
列出cookies=((默认httpClient)httpClient.getCookieStore().getCookies();
用于(Cookie c:cookies){
if(c.getName().equals(“PHPSESSID”)){
myCookie=c.getName()+“=”+c.getValue();
打破
}
}
URL=新URL(Html.fromHtml(“http://vocublablair.nl“+content.toString());
URLConnection=url.openConnection();
connection.setDoInput(true);
setRequestProperty(“Cookie”,mycokie);
connection.connect();
位图位=BitmapFactory.decodeStream(新的FlushedInputStream((InputStream)连接.getContent());

我正在使用FlushedInputStream。在这里阅读:

我现在正在用php在服务器上生成它。(见相关链接)