Java 如何在Android的ImageView中显示验证码。?

Java 如何在Android的ImageView中显示验证码。?,java,android,imageview,captcha,Java,Android,Imageview,Captcha,我在Google Play上有一个PNR查询应用程序。它工作得很好。但最近印度Railwys在其PNR查询部分添加了captcha,因此我无法向服务器传递正确的数据以获得正确的响应。如何在我的应用程序中以imageview的形式添加此验证码,并要求用户输入验证码详细信息,以便我可以发送正确的数据并获得正确的响应 如果您检查html代码,其验证码实际上相当糟糕。 验证码的背景是: 这些数字实际上在输入标签中: <input name="lccp_cap_val" value="14167"

我在Google Play上有一个PNR查询应用程序。它工作得很好。但最近印度Railwys在其PNR查询部分添加了captcha,因此我无法向服务器传递正确的数据以获得正确的响应。如何在我的应用程序中以imageview的形式添加此验证码,并要求用户输入验证码详细信息,以便我可以发送正确的数据并获得正确的响应


如果您检查html代码,其验证码实际上相当糟糕。 验证码的背景是: 这些数字实际上在输入标签中:

<input name="lccp_cap_val" value="14167" id="txtCaptcha" type="hidden">

另外,请注意,我没有将其包装在异步调用中,因此您必须这样做。

如果您检查html代码,其验证码实际上非常糟糕。 验证码的背景是: 这些数字实际上在输入标签中:

<input name="lccp_cap_val" value="14167" id="txtCaptcha" type="hidden">

另外,请注意,我没有将此包装在异步调用中,因此您必须这样做。

网络图像可以通过高效的图像加载api(如Picasso/volley)在android中显示,也可以通过异步任务简单地查看图像

考虑到以上所有内容都是基本的构建逻辑,因此您应该需要该验证码的图像URL。如果用户重置或刷新验证码,那么它应该通过网络调用重新加载新图像,请求新的请求实现,您必须获得对印度铁路的REST api访问权,并检查其中是否有可用的图像uri(可以是base64格式)

如果RESTAPI不可用,您可以考虑使用此代码构建自己的服务器


更新:你不需要做这种复杂的破解,只需实现Drago的答案!

来自网络的图像可以通过高效的图像加载api(如Picasso/volley)在android中显示,或者简单地通过异步任务查看图像

考虑到以上所有内容都是基本的构建逻辑,因此您应该需要该验证码的图像URL。如果用户重置或刷新验证码,那么它应该通过网络调用重新加载新图像,请求新的请求实现,您必须获得对印度铁路的REST api访问权,并检查其中是否有可用的图像uri(可以是base64格式)

如果RESTAPI不可用,您可以考虑使用此代码构建自己的服务器


更新:你不需要做这种复杂的破解,只需实现Drago的回答。

该网站只需使用原始文本来显示验证码,而不是图像。然后如何获取数据。你能解释一下吗?该网站只需使用原始文本来显示验证码,而不是图像。然后如何获取数据。你能解释一下吗。?我们可以自动填充编辑文本并使其对用户友好:)这真是一个糟糕的实现!他们应该发送base64图像!如何获取验证码的当前值。?@ZooZ问题是你不必这样做。只需使用相同的数字(或生成某种数字,这样他们可能不会产生怀疑)对于这两个输入字段。只要它们相同,它们是什么都不重要。公共类PNRStatusCheck{public static void main(String args[]){try{String pnr1=“1154177041”;String reqStr=“lccp_pnrno1=“+pnr1+”&submitpnr=Get+Status”;PNRStatusCheck check=new PNRStatusCheck();StringBuffer data=check.getPNRResponse(reqStr,);if(data!=null){@SuppressWarnings(“未使用”)PNRStatus pnr=check.parseHtml(data);}}}catch(异常e){e.printStackTrace();}这是我正在发送的当前req字符串。您能帮我如何在其中添加2个输入字段吗?请不要介意,我对android非常陌生。我们可以自动填充编辑文本并使其对用户友好:)真是一个糟糕的实现!他们应该发送base64图像!如何获取验证码的当前值。?@ZooZ问题是你不必这样做。只需使用相同的数字(或生成某种数字,这样他们可能不会产生怀疑)对于这两个输入字段。只要它们相同,它们是什么都不重要。公共类PNRStatusCheck{public static void main(String args[]){try{String pnr1=“1154177041”;String reqStr=“lccp_pnrno1=“+pnr1+”&submitpnr=Get+Status”;PNRStatusCheck check=new PNRStatusCheck();StringBuffer data=check.getPNRResponse(reqStr,);if(data!=null){@SuppressWarnings(“未使用”)PNRStatus pnr=check.parseHtml(data);}}}catch(异常e){e.printStackTrace();}这是我正在发送的当前请求字符串。你能帮我如何在其中添加2个输入字段吗?请不要介意,我对android非常陌生。。