xiaowuhls 2015-07-21 15:28 采纳率: 100%
浏览 1892
已采纳

关于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 就不能获取了

请求大神指点迷津

  • 写回答

4条回答 默认 最新

  • devmiao 2015-07-21 15:40
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退