2011-09-07 28 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

其實我試過這個,但結果是一樣的。還有其他建議嗎? –