我有這樣的球衣webResource代碼:爲什麼我的球衣ClientResponse不是空的,但可用返回0?
@Override
public int Foo(long uId, String secretKey, long tileId) {
int answer = 0;
String ans;
try {
ClientResponse response = webResource
// .path("multi-get")
.queryParam("reqtype", "tileBatch")
.queryParam("protocol", "1")
.queryParam("sessionid", String.valueOf(uId))
.queryParam("cookie", String.valueOf(secretKey))
.queryParam("num", "1")
.queryParam("t0", String.valueOf(tileId))
.queryParam("v0", "0")
.get(ClientResponse.class);
if (response.getStatus() != 200) {
throw new RuntimeException("Failed : HTTP error code : "
+ response.getStatus());
}
String output = response.getEntity(String.class);
answer = response.getEntityInputStream().available();
byte[] byteArray = output.getBytes("UTF-8");
ans = new String(byteArray, "UTF-8");
} catch (Exception e) {
e.printStackTrace();
}
return answer;
}
}
我看String output = response.getEntity(String.class);
不爲空,但在answer = response.getEntityInputStream().available();
然後answer == 0
怎麼來的?
如果我想解析從二進制數據的2個第一個字節到一個整數 我該怎麼做? (int) byteArray[0]
?
例如00000000-00010000
編輯
我試過這段代碼:
InputStream entityInputStream = response.getEntityInputStream();
answer = entityInputStream.available();
String output = response.getEntity(String.class);
byte[] byteArray = new byte[2];
// entityInputStream.reset();
entityInputStream.read(byteArray);
String s = new String(byteArray);
,但尚未byteArray == {0,0}
即使output
不爲空。
output == ....
�*WZDF04x��:w|������6[�!�M���@HH �� �����TQ�W�""[email protected]�Z $(���ұ=��[��� ��d�s�n6K�������{�99��{����$qE48"
是我的方法是否正確?
一旦你閱讀'getEntity'流變空。該流被讀取以轉換爲字符串。同樣的流不能從兩次讀取 –
謝謝。請發表一個答案,我會投票。順便說一句,如果我讀了兩個字節我怎麼能解析它爲int?例如'00000000-00000010'到4? –
請參閱我的更新 –