gpt4 book ai didi

java - http POST 格式问题 - 作为数组、列表?

转载 作者:行者123 更新时间:2023-12-01 04:29:35 28 4
gpt4 key购买 nike

我正在尝试发出“空闲/忙碌”请求以连接到 Google Calendar API。目前我被困在格式化 http POST 上。我收到错误:

{
"error": {
"errors": [
{
"domain": "global",
"reason": "parseError",
"message": "Parse Error"
}
],
"code": 400,
"message": "Parse Error"
}
}
<小时/>

我正在尝试像这样格式化请求:

{
"timeMin": datetime,
"timeMax": datetime,
"timeZone": string,
"groupExpansionMax": integer,
"calendarExpansionMax": integer,
"items": [
{
"id": string
}
]
}

目前正在执行此操作来格式化它:

String[] stringPairs = new String[]{
"timeMin", date1,
"timeMax", date2,
"items[]", calendarID,
"timezone", "Canada/Toronto"};

//Create an HTTP post request
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("HostULR");
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(stringPairs.length/2 - 1);

for (int i = 0; i < stringPairs.length; i += 2) {
nameValuePairs.add(new BasicNameValuePair(stringPairs[i], stringPairs[i+1]));
}

post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
org.apache.http.HttpResponse response = client.execute(post);
HttpEntity entity = response.getEntity();

我相信我搞砸的部分是“items”部分。任何帮助将不胜感激。

最佳答案

不知道这对于 java 是否正确,但在 C 中,你只需将另一个 json 插入其中即可生成复杂的 json。

也许这个网站可以帮助你。

https://code.google.com/p/json-simple/wiki/EncodingExamples#Example_1-3_-_Encode_a_JSON_object_-_Using_Map

编辑:我注意到表单是一个对象数组...所以正确的实现是这样的。

  JSONObject obj=new JSONObject();
obj.put("ID", string);

JSONArray list = new JSONArray();

list.add(obj);

JSONObject jsonObj = new JSONObject();{
object.put("timeMin", date1)
....

另外,我不知道这段代码...

"timezone",      "Canada/Toronto"}, accessToken );

对于 json 对象,通常用 {} 表示 json 对象 [] 这些是数组。

编辑2:创建 JSON 后执行此操作

StringEntity entity = new StringEntity(json.toString());
entity.setContentType("application/json;charset=UTF-8");
entity.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"application/json;charset=UTF-8"));
request.setHeader("Accept", "application/json");
request.setEntity(entity);

HttpResponse response =null;
DefaultHttpClient httpClient = new DefaultHttpClient();

HttpConnectionParams.setSoTimeout(httpClient.getParams(), Constants.ANDROID_CONNECTION_TIMEOUT*1000);
HttpConnectionParams.setConnectionTimeout(httpClient.getParams(),Constants.ANDROID_CONNECTION_TIMEOUT*1000);
try{

response = httpClient.execute(request);
}
catch(SocketException se)
{
Log.e("SocketException", se+"");
throw se;
}




InputStream in = response.getEntity().getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line = null;
while((line = reader.readLine()) != null){
sb.append(line);

关于java - http POST 格式问题 - 作为数组、列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18108315/

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