我正在努力與一個簡單的方法,應該給我一個對象,但使用解析(connectionRequest
,readresponse
和postresponse
)它總是給我可以爲空值。我的代碼Codename一個解析
Paiement P = new PaiementDAO().FindByCardNumber("5300721124642197");
System.out.println("hi "+P.getCardHolderName());
輸出始終執行system.out.println
第一,然後進入findby
方法有什麼不對
實例?
這是我的全部代碼
` public Paiement FindByCardNumber(String CardNumber) {
Paiement P = new Paiement();
ConnectionRequest connectionRequest;
connectionRequest = new ConnectionRequest() {
List<Paiement> colors = new ArrayList<>();
@Override
protected void readResponse(InputStream input) throws IOException {
System.out.println("hi read response");
JSONParser json = new JSONParser();
try {
Reader reader = new InputStreamReader(input, "UTF-8");
Map<String, Object> data = json.parseJSON(reader);
List<Map<String, Object>> content
= (List<Map<String, Object>>) data.get("root");
colors.clear();
for (Map<String, Object> obj : content) {
colors.add(
new Paiement((String) obj.get("cardholdername"), (String) obj.get("cardnumber"), (String) obj.get("expirationdate"), (String) obj.get("securitycode"), (String) obj.get("type"), Float.parseFloat((String) obj.get("solde"))));
}
} catch (IOException err) {
}
}
@Override
protected void postResponse() {
System.out.println("hi post response");
for (Paiement x : colors) {
P = x;
System.out.println(P);
return;
}
}
};enter code here
connectionRequest.setUrl("http://localhost/payement/findbynumber.php?num=" + CardNumber);
NetworkManager.getInstance().addToQueue(connectionRequest);
return P;`
永遠不要發生這樣的異常。在沒有記錄的情況下很可能會吞下一個錯誤。我建議在響應的第一行放置一個斷點,然後跨越代碼。你有價值嗎?它很不清楚是什麼問題,但你可以很容易地看到它通過檢查變量, –
如果我添加一些(system.out.println)我得到想要的值,但問題是,當這個代碼執行時,首先要執行的事情是那些行: {connectionRequest.setUrl(「http://localhost/payement/findbynumber.php?num =」+ CardNumber); NetworkManager.getInstance()。addToQueue(connectionRequest); return P;'} –
好的,你的問題並不清楚。 'addToQueue'是異步的。你可以用'addToQueueAndWait()'代替它。 –