Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用jax-rs创建POST请求_Java_Json_Rest_Web Services_Jax Rs - Fatal编程技术网

Java 如何使用jax-rs创建POST请求

Java 如何使用jax-rs创建POST请求,java,json,rest,web-services,jax-rs,Java,Json,Rest,Web Services,Jax Rs,我有两个类PlaylistResource,它有一个方法createPlaylist,它接受PlaylistRequest类型的对象。我想在localhost:9999/playlists上创建一个POST请求我正在使用Postman,我不确定如何将Playlist请求的对象传递给方法createPlaylist @XmlType(propOrder= {"title", "artistSeeds", "numberOfSongs"}) @XmlAccessorType(XmlAccessTyp

我有两个类PlaylistResource,它有一个方法createPlaylist,它接受PlaylistRequest类型的对象。我想在localhost:9999/playlists上创建一个POST请求我正在使用Postman,我不确定如何将Playlist请求的对象传递给方法createPlaylist

@XmlType(propOrder= {"title", "artistSeeds", "numberOfSongs"})
@XmlAccessorType(XmlAccessType.FIELD)
public class PlaylistRequest {

    private String title = "";
    @XmlElement(name = "seeds")
    private List<String> artistSeeds;
    @XmlElement (name = "size")
    private int numberOfSongs = 0;

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public List<String> getArtistSeeds() {
        return artistSeeds;
    }

    public void setArtistSeeds(List<String> artistSeeds) {
        this.artistSeeds = artistSeeds;
    }

    public int getNumberOfSongs() {
        return numberOfSongs;
    }

    public void setNumberOfSongs(int numberOfSongs) {
        this.numberOfSongs = numberOfSongs;
    }
}
@XmlType(proporter={“title”,“artistSeeds”,“numberOfSongs”})
@XmlAccessorType(XmlAccessType.FIELD)
公共类播放请求{
私有字符串title=“”;
@xmlement(name=“seeds”)
私人艺人名单;
@xmlement(name=“size”)
私有int numberOfSongs=0;
公共字符串getTitle(){
返回标题;
}
公共无效集合标题(字符串标题){
this.title=标题;
}
公共列表getArtistSeeds(){
归还艺术家的种子;
}
public void setArtistSeeds(列出artistSeeds){
this.artistSeeds=artistSeeds;
}
public int getNumberOfSongs(){
返回若干首歌曲;
}
公共无效集合numberOfSongs(int numberOfSongs){
this.numberOfSongs=numberOfSongs;
}
}
另一类:

@Path("playlists")
public class PlaylistResource implements PlaylistApi {

    @Override
    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public Response createPlaylist(PlaylistRequest request) {

        if(request == null) {
            System.out.println("Was here");
            throw new ClientRequestException(new ErrorMessage("no parameter passed."));
        }

        try {
            List<Song> playList = new ArrayList<>();
            List<Song> songs = new ArrayList<>();
            List<String> artistsIds = new ArrayList<>();
            ArtistResource artistsResources = new ArtistResource();
            int playlistDefaultSize = 10;

            int i = 0;
            do {
                playList.add(songs.get(i));
                i++;
            }while( i < playlistDefaultSize);

            Playlist playlist = new Playlist();
            playlist.setTitle(request.getTitle());
            playlist.setSize(songs.size());
            playlist.setTracks(playList);

            return Response.status(Response.Status.CREATED.getStatusCode()).entity(playlist).build();
        } catch (Exception e) {
            throw new RemoteApiException(new ErrorMessage(e.getMessage()));
        }
    }

}

@Path(“播放列表”)
公共类播放资源实现播放API{
@凌驾
@职位
@使用(MediaType.APPLICATION_JSON)
@产生(MediaType.APPLICATION_JSON)
公共响应createPlaylist(播放请求){
if(请求==null){
System.out.println(“在这里”);
抛出新的ClientRequestException(新的错误消息(“未传递参数”);
}
试一试{
List playList=new ArrayList();
列表歌曲=新建ArrayList();
List artistsIds=new ArrayList();
ArtistResource artistsResources=新的ArtistResource();
int-defaultsize=10;
int i=0;
做{
playList.add(songs.get(i));
i++;
}而(i<0.01)的大小;
Playlist Playlist=新建播放列表();
playlist.setTitle(request.getTitle());
playlist.setSize(songs.size());
播放列表。设置曲目(播放列表);
返回Response.status(Response.status.CREATED.getStatusCode()).entity(playlist.build();
}捕获(例外e){
抛出新的RemoteApiException(新的ErrorMessage(例如getMessage());
}
}
}

只需在请求的
Body
中添加
JSON
对象,在
Postman
中选择
Raw JSON
并粘贴以下对象:

注意:在请求的
标题
中添加一个键
内容类型
,并将其值设置为
application/json

{
  "title": "Some title",
  "artistSeeds": [
    "string1",
    "string2"
  ],
  "numberOfSongs": 0
}
标题 身体

只需在请求的
正文中添加
JSON
对象,在
Postman
中选择
Raw JSON
并粘贴以下对象:

注意:在请求的
标题
中添加一个键
内容类型
,并将其值设置为
application/json

{
  "title": "Some title",
  "artistSeeds": [
    "string1",
    "string2"
  ],
  "numberOfSongs": 0
}
标题 身体
将此参数从数据类更改为字符串

公共响应创建播放列表(播放请求){

public Response createPlaylist(字符串请求){

然后使用GSON将其转换为数据类

PlaylistRequest request = new Gson().fromJson(request, new TypeToken<PlaylistRequest >(){}.getType());
播放请求请求=new Gson().fromJson(请求,new TypeToken(){}.getType());
将此参数从数据类更改为字符串

公共响应创建播放列表(播放请求){

public Response createPlaylist(字符串请求){

然后使用GSON将其转换为数据类

PlaylistRequest request = new Gson().fromJson(request, new TypeToken<PlaylistRequest >(){}.getType());
播放请求请求=new Gson().fromJson(请求,new TypeToken(){}.getType());
如果我理解正确,您的意思是想知道如何在邮递员中使用原始有效负载测试post方法?正确?如果是,您可以观看此视频:或者这里有明确的解释:如果我理解正确,您的意思是想知道如何在邮递员中使用原始有效负载测试post方法?正确?如果是的,你可以看这个视频:或者这里有明确的解释:他为什么需要这样做的可能重复?当jersey可以使用某个库将json映射到对象本身时?这只是另一种方式。对于rest API,GSON库对我来说是必须的:)他为什么需要这样做?当jersey可以使用某个库将json映射到对象本身时?这只是一个例子另一种方法。对于rest API GSON库,我必须这样做:)我已经尝试过了,但它返回500个内部服务器错误。500个内部服务器意味着您在代码中有一些问题,现在只需读取异常跟踪并查看代码中的问题。它返回了400个错误的请求。由于语法错误,请求无法实现。是否指定了cont标头中的ent类型?我已尝试此操作,但它返回500内部服务器错误。500内部服务器意味着您在代码中有一些问题,现在只需读取异常跟踪并查看代码中的问题。它返回400个错误请求。由于语法错误,请求无法完成。是否在标头中指定了内容类型?