从asp.net客户端到java服务器的HttpRequest有错误“请求被拒绝,因为没有找到多部分边界”

时间:2016-10-05 14:23:27

标签: java c# asp.net

asp.net客户端

的.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Image_Identify.aspx.cs"
    Inherits="WebApplication.iva.Image_Identify" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server" enctype="multipart/form-data" method="post">
    <div>
        <asp:Button ID="Button_Post" runat="server" Text="submit" OnClick="Button_PostWebRequest" />
    </div>
    </form>
</body>
</html>

.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net;
using System.IO;
using System.Text;

namespace WebApplication.iva
{
    public partial class Image_Identify : System.Web.UI.Page
    {

        protected void Page_Load(object sender, EventArgs e)
        {
            string postUrl = "http://xxx/WebUploadHandleServlet";
            string paramData = "E:\\1111.jpg";

            string ret = string.Empty;
            Encoding dataEncode = Encoding.UTF8;
            try
            {
                byte[] byteArray = dataEncode.GetBytes(paramData); 
                HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri(postUrl));
                webReq.Method = "POST";

                webReq.ContentType = "multipart/mixed";

                webReq.ContentLength = byteArray.Length;

                Stream newStream = webReq.GetRequestStream();
                newStream.Write(byteArray, 0, byteArray.Length);
                newStream.Close();
                HttpWebResponse response = (HttpWebResponse)webReq.GetResponse();
                StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.Default);
                ret = sr.ReadToEnd();
                sr.Close();
                response.Close();
                newStream.Close();
            }
            catch (Exception ex)
            {
                Response.Write("<script>alert('" + ex.Message + "')</script>");
            }
        }
        protected void Button_PostWebRequest(object sender, EventArgs e)
        {

        }

    }
}

java服务器

@WebServlet(asyncSupported = true, urlPatterns = { "/WebUploadHandleServlet" })
public class WebUploadHandleServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    private final long MAXSize = 1024 * 1024 * 4 * 2L;// 4*2MB
    private String filedir = null;// before
    private String resdir = null;// after

/**
     * @see HttpServlet#HttpServlet()
     */
    public WebUploadHandleServlet() {
        super();

    }

    /**
    * @see Servlet#init(ServletConfig)
    */
    public void init(ServletConfig config) throws ServletException {
        // TODO Auto-generated method stub
        System.out.println("init...");
        JNIDispatcher.getInstance();
        filedir = config.getServletContext().getRealPath("WEB-INF/original_images");
        resdir = config.getServletContext().getRealPath("WEB-INF/result_images");

        File file1 = new File(filedir);
        File file2 = new File(resdir);
        if (!file1.exists() && !file2.exists()) {
            System.out.println("create dir");
            file1.mkdir();
            file2.mkdir();
            System.out.println("create success");
        }
        System.out.println("filedir=" + filedir);
        System.out.println("resdir=" + resdir);
        super.init(config);
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        System.out.println("receive request");
        double begin_time = System.currentTimeMillis();

        FileItemFactory factory = new DiskFileItemFactory();
        ServletFileUpload upload = new ServletFileUpload(factory);
        //FileUpload upload = new FileUpload(factory);20161005
        upload.setSizeMax(-1);
        upload.setHeaderEncoding("utf-8");
        ImageDispose disposer = new ImageDispose(filedir, resdir);

        // response.setContentType("text/html");
        response.setContentType("multipart/form-data");
        response.setCharacterEncoding("utf-8");

        PrintWriter out = response.getWriter();
        String respondResult = null;
        String filename = null;
        try {
            List<FileItem> items = upload.parseRequest(request);
            if (items != null && !items.isEmpty()) {
                System.out.println("items size:" + items.size());
                double start_time = System.currentTimeMillis();
                for (FileItem fileItem : items) {
                    filename = fileItem.getName();
                    String filepath = filedir + File.separator + filename;
                    System.out.println("file save path:" + filepath);

                    InputStream inputStream = fileItem.getInputStream();
                    respondResult = disposer.process(inputStream, filename);

                    inputStream.close();
                    fileItem.delete();
                }
                double end_time = System.currentTimeMillis();
                System.out.println("JNI handle" + filename + "time:" + (end_time - start_time) + "ms");
                System.out.println("total time:" + (end_time - begin_time));
            }

            out.write(respondResult);

        } catch (Exception e) {
            e.printStackTrace();
            out.write("文件" + filename + "upload fail:" + e.getMessage());
        }

        System.out.println("finish!");

    }

    @Override
    public void destroy() {
        System.out.println("release JNI...");
        JNIDispatcher.getInstance().releaseJNI();
        super.destroy();
    }
}

我打印的结果如下。 似乎java服务器已收到http请求但无法解析。 希望得到帮助!

enter image description here

enter image description here

0 个答案:

没有答案