gpt4 book ai didi

java - 使用 ajax 将数据发布到 Jax-RS

转载 作者:太空宇宙 更新时间:2023-11-04 15:11:54 24 4
gpt4 key购买 nike

我是 Jax-RS 的新手,在使用 ajax 的 Web 服务时遇到一些问题。我的 get 请求正常工作,现在我尝试发布一些数据以保存到 Oracle 11g 数据库,我的 ajax 调用仅返回错误,这使得调试变得困难。

这是我的 ajax 调用

 function save(img)   // base64 encoded string
{


$.ajax({
type: "POST",
url: "http://192.168.42.179:8082/PotholeWebservice/webresources/entities.pothole/post",
data: img,
dataType: "json",
success: function(data)
{
alert("saved to database");
},
error: function(textStatus, errorThrown)
{
alert("error in saving to database: " + textStatus + " " + errorThrown);
}
});
}

这是我的 jax-rs post 方法

 @POST
@Path("post")
@Consumes({"application/xml", "application/json"})
public void create(@PathParam("paramImg") String paramImg) {

Date date = new Date();
BASE64Decoder decoder = new BASE64Decoder(); // decode base64 image to byte[]
byte[] decodedBytes = null;
try {
decodedBytes = decoder.decodeBuffer(paramImg);
} catch (IOException ex) {
Logger.getLogger(PotholeFacadeREST.class.getName()).log(Level.SEVERE, null, ex);
}

Pothole entity = new Pothole(decodedBytes, date);
super.create(entity);

}

父类(super class)

// super.create
public void create(T entity) {
getEntityManager().persist(entity);

}

我的类(class)

public class Pothole implements Serializable {
private static final long serialVersionUID = 1L;
@Basic(optional = false)
@NotNull
@Lob
@Column(name = "IMAGE")
private byte[] image;
// @Max(value=?) @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation

@Id
@GeneratedValue(generator = "ID_Seq")
@SequenceGenerator(name="IDSeq",sequenceName="ID_SEQ", allocationSize=1)
@Basic(optional = false)
@NotNull
@Column(name = "ID")
private BigDecimal id;

@Basic(optional = false)
@NotNull
@Column(name = "PDATE")
@Temporal(TemporalType.TIMESTAMP)
private Date pdate;

public Pothole() {
}

public Pothole(BigDecimal id) {
this.id = id;
}

public Pothole( byte[] image, Date pdate) {

this.image = image;
this.pdate = pdate;
}

public byte[] getImage() {
return image;
}

public void setImage(byte[] image) {
this.image = image;
}

public BigDecimal getId() {
return id;
}

public void setId(BigDecimal id) {
this.id = id;
}

public Date getPdate() {
return pdate;
}

public void setPdate(Date pdate) {
this.pdate = pdate;
}

最佳答案

你要注入(inject)的用@PathParam("paramImg")标记的方法参数paramImg是一个空字符串,因为你没有在@中定义相应的模板Path("post") (即 @Path("post\{paramImg}")。这可能是一个问题。

如果您想在资源方法中注入(inject)请求实体,请省略注释,JAX-RS 将确保注入(inject)实体。

打开LoggingFilter (要了解如何查看此 article )以查看服务器端发生了什么。请发布日志。

关于java - 使用 ajax 将数据发布到 Jax-RS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21240777/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com