将 POSTMAN 代码翻译成 Java

Translate POSTMAN code into Java

我正在尝试实现(在 java 中)POSTPOST 请求的 MAN 预览。它使用边界和内容配置,我对 java 中的边界和内容配置实现不太熟悉。我认为专家可以帮助我解决这个问题,在此先感谢。

POST /etap-cgi/cgiunl.exe HTTP/1.1
Host: unl.ru
X-Auth-Token: 5dc347210229bd8b9565d213f0d4f80f738970083d03a8e73a0d5f649019272e
Cache-Control: no-cache

----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="conversion"

true
----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="language"

en
----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="data"

aar partasi nah
----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="outputmode"

text
----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="coding"

utf-8
----WebKitFormBoundaryE19zNvXGzXaLvS5C

我试过了,但它说'

Fatal error in process of translation

这是我在 java 中的实现。

HttpClient httpclient = new DefaultHttpClient();

    try {
        // url parameters
        MultipartEntityBuilder multipartEntity = MultipartEntityBuilder
                .create();
        multipartEntity.addTextBody("conversion", "ture",
                ContentType.TEXT_PLAIN);
        multipartEntity.addTextBody("language", "en",
                ContentType.TEXT_PLAIN);
        multipartEntity.addTextBody("data", "example",
                ContentType.TEXT_PLAIN);
        multipartEntity.addTextBody("outputmode", "text",
                ContentType.TEXT_PLAIN);
        multipartEntity.addTextBody("coding", "utf-8",
                ContentType.TEXT_PLAIN);

        multipartEntity
                .setBoundary("----WebKitFormBoundaryE19zNvXGzXaLvS5C");


        HttpEntity multiPart = multipartEntity.build();

        HttpPost httpPost = new HttpPost(
                url);
        httpPost.setEntity(multiPart);
        httpPost.setHeader("Content-Disposition", "form-data");

        // get response after execution
        HttpResponse response = httpclient.execute(httpPost);
        // get response entities
        HttpEntity resEntity = response.getEntity();

        if (resEntity != null) {
            System.out.println("Response content length: "
                    + resEntity.getContentLength());
            String responseBody = EntityUtils.toString(resEntity);
            System.out.println("Data: " + responseBody);
        }

        EntityUtils.consume(resEntity);

    } catch (Exception err) {
        System.err.println(err.toString());
    } finally {
        // close connection
        httpclient.getConnectionManager().shutdown();
    }

我已经通过上传文件而不是多部分字符串自行解决了我的问题,这里是边界参数没有 "WebKitFormBoundary" 个字符的解决方案。希望这对某人有所帮助。

public String httpOperation(String conversion, String fileName) {

    HttpClient httpclient = new DefaultHttpClient();
    try {
        // url parameters
        MultipartEntityBuilder multipartEntity = MultipartEntityBuilder
                .create();
        // add html tags param
        multipartEntity.addTextBody("conversion", conversion,
                ContentType.TEXT_PLAIN);
        multipartEntity.addTextBody("language", EN, ContentType.TEXT_PLAIN);
        multipartEntity.addTextBody("outputmode", TEXT,
                ContentType.TEXT_PLAIN);
        multipartEntity.addTextBody("coding", UTF, ContentType.TEXT_PLAIN);

        // add files as attachments
        multipartEntity.addPart("sourcefile", new FileBody(new File(
                fileName), ContentType.TEXT_PLAIN, "filename"));

        multipartEntity.setBoundary(PARAM_BOUNDARY);

        HttpEntity postEntity = multipartEntity.build();

        HttpPost httpPost = new HttpPost(URL);
        httpPost.setHeader("Content-Disposition", "form-data;");
        httpPost.setEntity(postEntity);

        // get response after execution
        HttpResponse response = httpclient.execute(httpPost);

        // get response entities
        HttpEntity resEntity = response.getEntity();

        if (resEntity != null) {
            @SuppressWarnings("deprecation")
            String responseBody = EntityUtils.toString(resEntity,
                    HTTP.UTF_8);
            // print output
            if (conversion.equals(TRUE)) {
                extractResponse(responseBody.toString());
                // System.out.println(responseBody.toString());
                result = responseBody.toString();
            } else {
                // System.out.println(responseBody.toString());
                result = responseBody.toString();
            }
        }
        EntityUtils.consume(resEntity);

    } catch (Exception err) {
        System.err.println(err.toString());
    } finally {
        // close connection
        httpclient.getConnectionManager().shutdown();
    }

    return result;
}

这是 POSTMAN 构建预览

POST /url/ HTTP/1.1
Host: unl.ru
X-Auth-Token: 5dc347210229bd8b9565d213f0d4f80f738970083d03a8e73a0d5f649019272e
Cache-Control: no-cache

----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="conversion"

false
----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="language"

en
----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="sourcefile";   filename="conversion.txt"
Content-Type: text/plain


----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="outputmode"

text
----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="coding"

utf-8
----WebKitFormBoundaryE19zNvXGzXaLvS5C