gpt4 book ai didi

java - AppEngine 上的多部分 POST (Java)

转载 作者:可可西里 更新时间:2023-11-01 16:34:24 25 4
gpt4 key购买 nike

简单的问题(很困惑我在这里找不到答案):

我想从我的 AppEngine Java servlet(出站)执行多部分编码的 HTTP POST。 AppEngine 似乎不支持 Apache HTTP 库并且本身不提供 API(仅 setPayload(byte[])),但我想避免自己实现多部分编码。所以:

  1. 有没有办法从 AppEngine Java 发送多部分 HTTP 主体?

  2. 是否有库将这样的主体编码成byte[] 数组? (请注意,MultiPartEntity.getContent() 未实现。)然后我可以使用 AppEngine 内部 URLFetch API(我更喜欢它,因为它具有异步调用功能)。

最佳答案

我编写了一个小帮助程序方法,用于向 AppEngine 添加多部分 POST 支持(使用 Apache HTTP 客户端库)。

public static void addMultipartBodyToRequest(MultipartEntity entity, HTTPRequest req) throws IOException{

/*
* turn Entity to byte[] using ByteArrayOutputStream
*/
ByteArrayOutputStream bos = new ByteArrayOutputStream();
entity.writeTo(bos);
byte[] body = bos.toByteArray();

/*
* extract multipart boundary (body starts with --boundary\r\n)
*/
String boundary = new BufferedReader(new StringReader(new String(body))).readLine();
boundary = boundary.substring(2, boundary.length());

/*
* add multipart header and body
*/
req.addHeader(new HTTPHeader("Content-type", "multipart/form-data; boundary=" + boundary));
req.setPayload(body);
}

调用代码如下所示:

            MultipartEntity e = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
e.addPart("part1", new StringBody("value1"));
e.addPart("part2", new StringBody("value2"));

HTTPRequest req = new HTTPRequest(new URL(myUrl), HTTPMethod.POST);
ServletHelper.addMultipartBodyToRequest(e, req);

URLFetchServiceFactory.getURLFetchService().fetchAsync(req);

关于java - AppEngine 上的多部分 POST (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13591653/

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