如何编写休息服务使用Java

时间:2019-05-24 09:51:20

标签: java web-services

大多数示例在android网络服务中上传图片均使用PHP编码; Java的例子太少了。我找到了3个示例并遵循代码,但是在chorme的android和ARC上进行测试时,出现错误:HTTP状态500-内部服务器错误:Servlet [Jersey REST Service]的Servlet.init()抛出异常。 网址:http://srv.triaxvn.com:8080/logisticwsm/upload。 这是用于运行Tomcat Apache的Window服务器 这是代码1:

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.Response
import org.apache.commons.io.IOUtils;
import org.jboss.resteasy.plugins.providers.multipart.InputPart;
import org.jboss.resteasy.plugins.providers.multipart.MultipartFormDataInput;

@Path("/file")
public class UploadFile {
    private final String UPLOADED_FILE_PATH = "c:/uploaded/";        
    @POST
    @Path("/image-upload")
    @Consumes("multipart/form-data")
    public Response uploadFile(MultipartFormDataInput input) throws IOException
    {
        //Get API input data
        Map<String, List<InputPart>> uploadForm = input.getFormDataMap();
        String fileName = uploadForm.get("fileName").get(0).getBodyAsString();

        List<InputPart> inputParts = uploadForm.get("attachment");
        for (InputPart inputPart : inputParts)
        {
            try
            {
                @SuppressWarnings("unused")
                MultivaluedMap<String, String> header = inputPart.getHeaders();

                InputStream inputStream = inputPart.getBody(InputStream.class, null);
                byte[] bytes = IOUtils.toByteArray(inputStream);
                fileName = UPLOADED_FILE_PATH + fileName;
                writeFile(bytes, fileName);
                System.out.println("Success !!!!!");
            }
            catch (Exception e)
            {
                e.printStackTrace();
                return Response.status(200).entity("Uploaded file name : "+e.getMessage()).build();
            }
        }
        return Response.status(200)
                .entity("Uploaded file name : "+ fileName).build();
    }

    private void writeFile(byte[] content, String filename) throws IOException
    {
        File file = new File(filename);
        if (!file.exists()) {
            file.createNewFile();
        }
        FileOutputStream fop = new FileOutputStream(file);
        fop.write(content);
        fop.flush();
        fop.close();
    }

此代码2:

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
import com.sun.jersey.core.header.FormDataContentDisposition;
import com.sun.jersey.multipart.FormDataParam;

@Path("/upload")
public class FileUploadService {

    private static final String UPLOAD_FOLDER = "c:/uploaded/";
    public FileUploadService() {
    }
    @Context
    private UriInfo context;

    @POST
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public Response uploadFile(
            @FormDataParam("file") InputStream uploadedInputStream,
            @FormDataParam("file") FormDataContentDisposition fileDetail) {

        if (uploadedInputStream == null || fileDetail == null)
            return Response.status(400).entity("Invalid form data").build();
        // create our destination folder, if it not exists
        try {
            createFolderIfNotExists(UPLOAD_FOLDER);
        } catch (SecurityException se) {
            return Response.status(500)
                    .entity("Can not create destination folder on server")
                    .build();
        }
        String uploadedFileLocation = UPLOAD_FOLDER + fileDetail.getFileName();
        try {
            saveToFile(uploadedInputStream, uploadedFileLocation);
        } catch (IOException e) {
            return Response.status(500).entity("Can not save file").build();
        }
        return Response.status(200)
                .entity("File saved to " + uploadedFileLocation).build();
    }

请向我展示一个完整的示例代码,以创建Java Restful-api并将照片从android上传到此Web服务! 谢谢!

0 个答案:

没有答案