2011-09-07 64 views
0

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

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

结果为字节[]是:Response packet : [[email protected]

+0

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

回答

1

byte[].toString()始终打印"[[email protected]"

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

这将创建一个从你byte[]String(你并不真正需要做的,因为你从你所呼叫的另一种方法都有它的话)。

0

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

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

其实我试过这个,但结果是一样的。还有其他建议吗? –