簡體   English   中英

angularjs上的ERR_INCOMPLETE_CHUNKED_ENCODING - 休息服務使用高級REST客戶端返回無限的json文件,但郵遞員錯誤

[英]ERR_INCOMPLETE_CHUNKED_ENCODING on angularjs - rest service returns an infinite json file using Advanced REST Client but error in postman

我有一個非常奇怪的問題。 在angular(使用離子v1構建的應用程序)中,我調用了一些用java構建的REST調用,但是出了點問題,chrome告訴我這個錯誤: ERR_INCOMPLETE_CHUNKED_ENCODING

有趣的代碼就是這個,角度為js的REST服務:

 bankaccountsbyuser: function(_getbauser, _error){ var currentToken = _GetToken(); if(currentToken!=null){ var Headers = { token: currentToken.tokenUser, }; } _timerTokenControl(currentToken, _error); if (setupTime == null) { console.log("token scaduto"); //modificare //$window.location.href="login.html"; } if (currentToken !== null) { $http({ method : 'GET', headers: Headers, url : REST_URL+'bankaccount' }).then(function successCallback(response) { console.log(response) _getbauser(response) }, function errorCallback(response) { console.log(response.statusText); }); } else { var alertPopup = $ionicPopup.alert({ title: 'Accesso negato!', template: 'Devi essere un utente registrato, non sei loggato!' }); console.log("NON SEI LOGGATO!!!"); } }, 

調試: 調試

你怎么看,get REST服務返回一個錯誤,讓我們看看這個用java構建的REST服務:

 package it.jack.fdd.services; import java.util.List; import javax.ws.rs.DELETE; import javax.ws.rs.GET; import javax.ws.rs.HeaderParam; import javax.ws.rs.POST; import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import it.jack.fdd.dao.FactoryDao; import it.jack.fdd.dao.impl.BankAccountDaoImpl; import it.jack.fdd.dao.interfaces.BankAccountDao; import it.jack.fdd.domain.BankAccount; import it.jack.fdd.domain.User; import it.jack.fdd.dto.TokenUserDto; import it.jack.fdd.dto.UserDto; import it.jack.fdd.util.ConverterDTO; @Path("/bankaccount") public class BankAccountServices { @GET @Produces(MediaType.APPLICATION_JSON) public List<BankAccount> getBankAccountOfUser() { BankAccountDao baDao = new BankAccountDaoImpl(); List<BankAccount> balist = baDao.getBAByUserId(1); return balist; } 

我試圖在方法中傳遞數字“1”,只是為了簡化。 該方法實現如下:

 package it.jack.fdd.dao.impl; import java.util.List; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; import it.jack.fdd.dao.interfaces.BankAccountDao; import it.jack.fdd.domain.BankAccount; import it.jack.fdd.domain.Staff; import it.jack.fdd.domain.User; import it.jack.fdd.util.HibernateUtilLezione; public class BankAccountDaoImpl extends BaseDaoImpl<BankAccount> implements BankAccountDao{ public List<BankAccount> getBAByUserId(int id) { try{ Session session = HibernateUtilLezione.openSession(); Transaction tx = session.beginTransaction(); @SuppressWarnings("unchecked") List<BankAccount> accounts = session.createQuery("from BankAccount b " + "where b.user= "+id).list(); tx.commit(); session.close(); return accounts; } catch(HibernateException e){ e.printStackTrace(); return null; } } } 

正如你所看到的,該方法要求一個id,我只是將id 1用於檢查,因為在數據庫中有一個帶有該id的字段。 嘗試在java中,它返回一個列表

[it.jack.fdd.domain.BankAccount@4f8d86e4]

我還檢查了列表的維度為1(因此,只有一條記錄,就像在數據庫中一樣,只有1條記錄具有該iduser)

因此,嘗試使用郵遞員打開此REST調用,結果如下:

郵差錯誤

奇怪的是,郵遞員向我展示了另一個REST調用的相同結果,它之前有效。 但是對於這最后一次REST調用不是問題,因為奇怪的是它適用於我的應用程序,它不僅僅適用於郵遞員。 因此,嘗試使用高級REST客戶端我有一個奇怪的不同結果:

高級休息客戶端1

一個奇怪的,非常大的列表,每次重復相同的字段! 這就像一個循環! 怎么了? 我怎么解決?

解決了。 問題出在java的域類中:當域類具有一對多關系時,必須將標記@JsonIgnore放在json文件中以避免這些重復記錄 例

實體類:

 package it.jack.fdd.domain; // Generated 30-nov-2016 0.17.09 by Hibernate Tools 4.3.1.Final import java.util.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import static javax.persistence.GenerationType.IDENTITY; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; /** * BankAccount generated by hbm2java */ @Entity @Table(name = "bank_account", catalog = "fdd_dbproducts") public class BankAccount implements java.io.Serializable { private Integer idbankAccount; private User user; private String iban; private String pin; private String society; private Date expiration; public BankAccount() { } public BankAccount(User user, String iban, String pin, String society) { this.user = user; this.iban = iban; this.pin = pin; this.society = society; } public BankAccount(User user, String iban, String pin, String society, Date expiration) { this.user = user; this.iban = iban; this.pin = pin; this.society = society; this.expiration = expiration; } @Id @GeneratedValue(strategy = IDENTITY) @Column(name = "idbank_account", unique = true, nullable = false) public Integer getIdbankAccount() { return this.idbankAccount; } public void setIdbankAccount(Integer idbankAccount) { this.idbankAccount = idbankAccount; } @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "fkuser_baccount", nullable = false) public User getUser() { return this.user; } public void setUser(User user) { this.user = user; } @Column(name = "iban", nullable = false, length = 45) public String getIban() { return this.iban; } public void setIban(String iban) { this.iban = iban; } @Column(name = "pin", nullable = false, length = 45) public String getPin() { return this.pin; } public void setPin(String pin) { this.pin = pin; } @Column(name = "society", nullable = false, length = 45) public String getSociety() { return this.society; } public void setSociety(String society) { this.society = society; } @Temporal(TemporalType.DATE) @Column(name = "expiration", length = 10) public Date getExpiration() { return this.expiration; } public void setExpiration(Date expiration) { this.expiration = expiration; } } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM