【问题标题】:Android HttpRequest issueAndroid HttpRequest 问题
【发布时间】:2011-09-07 10:32:32
【问题描述】:

您好,我正在使用HttpPostHttpRequest 连接到服务器并获取结果。我将结果作为字符串并尝试将其转换为byte[]。但是当我这样做时,我得到的Stringbyte[] 的结果是不同的。我该如何解决? 这是我正在使用的代码:

public class TestProjectActivity extends Activity {

    Button cancel,login;
    HttpClient httpclient;
    HttpPost httppost;
    ArrayList<NameValuePair> postParameters;

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        httpclient = new DefaultHttpClient();
        httppost = new HttpPost("http://www.rpc.example.com");

        postParameters = new ArrayList<NameValuePair>();
        postParameters.add(new BasicNameValuePair("username_hash", "c34a6cf6bff9f6b61e96fdf4bf360157d522a17c"));
        postParameters.add(new BasicNameValuePair("password_hash", "56dc55f0062cf21797637b0f8652293023f2ef22"));

        cancel = (Button) findViewById(R.id.cancel_login_btn);
        cancel.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                finish();
            }
        });

        login = (Button) findViewById(R.id.login_btn);
        login.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                try {
                    httppost.setEntity(new UrlEncodedFormEntity(postParameters));

                    HttpResponse response = httpclient.execute(httppost);
                    String responseBody = EntityUtils.toString(response.getEntity()); //response
                    byte[] b = responseBody.getBytes();
                    Log.e("Packet","Response packet : "+b); //print packet
                    Log.e("Packet","Response packet : "+responseBody); //print packet





                } catch (Exception e) {
                    e.printStackTrace();
                    Log.d("ERROR"," Error lol - "+e);
                }

            }
        });
    }
}

字符串的结果是:Response packet : 00000000000000000000000000000001002001ec8ce6abb3e952a85b8551ba726a122700000000000000000000000000000002000000000000000000000000000001162c1c0624f7a2b272e05c4d997473a8e6001eyJsb2NhbGUiOiJlbl9VUyIsImlkIjoyLCJlcnJvcl9jb2RlIjo2MDAzLCJlcnJvcl9zdHJpbmciOiJVbnN1cHBvcnRlZCBDbGllbnQgVmVyc2lvbiJ9

byte[] 的结果是:Response packet : [B@462d93c0

【问题讨论】:

  • 字节不是字符串,字符串不是字节,所以两者不能相同

标签: android byte http-post httprequest


【解决方案1】:

byte[].toString() 总是打印"[B@..."

使用Log.e("Packet","Response packet : "+ new String(b, "UTF-8")); //print packet

这将从您的byte[] 创建一个新的String(您实际上不需要这样做,因为您已经从您正在调用的其他方法中获得了它)。

【讨论】:

    【解决方案2】:

    您需要设置响应字符串的正确编码,例如:

    byte[] b = responseBody.getBytes("UTF-8");
    

    【讨论】:

    • 其实这个我试过了,结果还是一样。还有什么建议吗?
    猜你喜欢
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多