httpclient-关于HttpClient问题。为什么安卓获取验证码时,得到的是乱码的验证码信息?

问题描述

关于HttpClient问题。为什么安卓获取验证码时,得到的是乱码的验证码信息?

这样能正确获取验证码

 package com.example.day51;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity extends Activity implements OnClickListener {
    private String string;
    private TextView textView;
    private Myhandler myhandler = new Myhandler();
    private Bitmap bitmap;
    private ImageView imageView;
    private EditText name, psw, code;
    private Button send;
    private String res;
    private String viewstate;
    private boolean successed;
    private DefaultHttpClient httpClient;
    private String names;
    private String passs;
    private String codes;
    private EditText text;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = (TextView) findViewById(R.id.textview1);
        imageView = (ImageView) findViewById(R.id.codeimg);
        name = (EditText) findViewById(R.id.name);
        psw = (EditText) findViewById(R.id.psw);
        code = (EditText) findViewById(R.id.code);
        send = (Button) findViewById(R.id.send);
        text = (EditText) this.findViewById(R.id.text);
        send.setOnClickListener(this);
        new UrlThread().start();
    }

    private class UrlThread extends Thread {

        public void run() {
            super.run();
            try {
                new GetCodeThread().start();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    private class GetCodeThread extends Thread {

        public void run() {
            try {
                getcode();
            } catch (Exception e) {
                e.printStackTrace();
            }
            super.run();
        }
    }

    public void getcode() throws Exception {
        httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost("http://jwgl.gxufe.cn/jwweb/sys/ValidateCode.aspx");
        HttpResponse httpResponse = httpClient.execute(httpPost);
        byte[] bytes = EntityUtils.toByteArray(httpResponse.getEntity());
        bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);

        myhandler.sendEmptyMessage(1);

    }

    private class Myhandler extends Handler {

        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what) {
            case 0:
                new GetCodeThread().start();
                break;
            case 1:
                textView.setText(string);
                imageView.setImageBitmap(bitmap);
                break;
            case 2:
                if (!successed) {
                    new GetCodeThread().start();
                }
                break;
            default:
                break;
            }
        }
    }

    public void onClick(View v) {
        new PostThread().start();
    }

    private class PostThread extends Thread {

        public void run() {
            super.run();
            try {
                myhandler.sendEmptyMessage(2);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    }
}

把网址改为:http://jw.gxufl.com/sys/ValidateCode.aspx 就不能获取了

请求大神指点迷津

解决方案

用fiddler调试下,应该是你没有正确处理字符串编码造成的。

解决方案二:

用fiddler调试下,fiddler是一个抓包分析http的工具

解决方案三:

发送和接收请求的时候,设置一下unicode,就可以了

解决方案四:

有没有做编码处理啊,最好还是编码一下

解决方案五:

能教一下怎么模拟登录正方教务系统的吗

时间: 2024-08-27 11:12:21

httpclient-关于HttpClient问题。为什么安卓获取验证码时,得到的是乱码的验证码信息?的相关文章

允许开机启动-急急急,安卓获取开机启动项列表,不是AndroidManifest.xml注册的项,是手机设置的

问题描述 急急急,安卓获取开机启动项列表,不是AndroidManifest.xml注册的项,是手机设置的 急急急,安卓获取开机启动项列表,不是AndroidManifest.xml注册的项,是手机设置的,能不能获取?在网上找的资料都只有AndroidManifest.xml注册过的列表,并没有手机设置的允许开机启动的列表,求大神支招...如图所示的开机启动列表! 解决方案 各位大神,大牛们,帮帮忙吧

安卓获取手机信号强度

问题描述 安卓获取手机信号强度 我要获取手机信号强度,同一手机,同一张卡,不同时间,有时候能够获取到信号强度,有时候就不行.请问下信号强度是不是与手机网络类型有关系 解决方案 获取手机信号强度手机信号强度手机信号强度

html 在获取短信验证码时弹出图片验证码

问题描述 html 在获取短信验证码时弹出图片验证码 html 在获取短信验证码时弹出图片验证码 并验证 图片验证码 正确了再执行短信发送 解决方案 ajax从服务器获取验证码.这个不可能仅仅由"html"完成. 解决方案二: session存在服务器端生成的验证码信息并生成图片,客户端输入验证码用ajax或者表单提交验证码到服务器进行验证,通过才调用发短信的方法什么的 解决方案三: 用ajax进行局部刷新,将验证码提交到后台,验证后在进行发送

串口数据编码(蓝牙),通过安卓获取数据

问题描述 上面的图片是我获取蓝牙串口数据的三种方式1:电脑超级终端.这是我想获取的数据格式2和3:是通过蓝牙串口调试工具获取的数据.我现在想通过安卓获取向超级终端那样的数据,这个该怎么编码,怎么写???????请大神们帮忙!

php中用curl获取验证码时同时获取cookies乱码

问题描述 php中用curl获取验证码时同时获取cookies乱码 我用curl获取验证码时同时想获取cookies信息但是乱码. curl获取时头信息时"Content-Type: text/html;"这个导致了乱码. 请问怎么解决,让验证码显示同时也能输出cookies? 解决方案 csdn中有人写过这样的博客 原文链接:http://blog.csdn.net/ashelyhss/article/details/7916970 自己去看看

安卓获取sdcard中图片并且显示

问题描述 安卓获取sdcard中图片并且显示 为什么eclipse中DDMS中 mnt/sdcard 目录打不开但是能新建文件 解决方案 http://www.cnblogs.com/hyzhou/p/3635676.html 解决方案二: 网上有好多android的例程,可以搜索一下 解决方案三: 一般来说这样的问题,你可以在DDMS中看清楚mnt/sdcard 后面有没有其他跳转路径,也就是当前的SDcard路径其实在其他地方,这个我也遇到过滴... 解决方案四: 权限问题,把你的手机roo

js实现获取验证码时60s后再次发送

我们在做注册或登陆的页面时经常有获取验证码的功能,在获取验证码时我们经常要做个60s禁止点击的功能,下面是我做项目时经常用到的代码: 例子 获取验证的按钮:  代码如下 复制代码 <input class="get" type="button" value="获取验证码" />; 获取验证码的Ajax函数: $(".get").on('click',function(){ var btn=$(this); var

发送post请求-向拍拍发送POST请求,获取的数据出现部分中文乱码和记录数很少

问题描述 向拍拍发送POST请求,获取的数据出现部分中文乱码和记录数很少 向拍拍发送POST请求,获取的数据出现部分中文乱码和记录数很少?在在线工具测试的时候,能够获取大量的数据,一般有上百万的命中数,返回一页大概40条记录,但是现在获取的数据命中数hitNum都是18,返回的数据也都是低于18.请各位大神多多指点!!!!!感激不尽.附上源代码和部分获取的数据. 源代码:private String postRequest(String url, HashMap cookies, String

[译] 当发布安卓开源库时我希望知道的东西

本文讲的是[译] 当发布安卓开源库时我希望知道的东西, 原文地址:Things I wish I knew when I started building Android SDK/Libraries 原文作者:本文已获作者 Nishant Srivastava 授权 译文出自:掘金翻译计划 译者:jifaxu 校对者:BoilerYao, gaozp 当发布安卓开源库时我希望知道的东西 一切要从安卓开发者开发自己的"超酷炫应用"开始说起,他们中的大多数会在这个过程中遇到一系列问题,而他