在objective c中使用Brightcove的Media API创建播放列表时出错:
{"method":"update_video","params":{"video":{"id":"myID","economics":"AD_SUPPORTED"},"token":"myToken.."}}
{"name":"MissingJSONError","message":"Could not find JSON-RPC.","code":211}, "result": null, "id": null}发布于 2014-07-16 21:28:14
确保将JSON作为表单数据发送,而不是作为原始的post正文。这是可行的,但我不是一个目标c专家。
NSString *urlString = @"https://api.brightcove.com/services/post";
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];
NSString *contentType = [NSString stringWithFormat:@"application/x-www-form-urlencoded"];
[request addValue:contentType forHTTPHeaderField: @"Content-Type"];
NSString *data = @"json={\"method\":\"update_video\",\"params\":{\"video\":{\"id\":\"myID\",\"economics\":\"AD_SUPPORTED\"},\"token\":\"myToken..\"}}";
[request setHTTPBody:[data dataUsingEncoding:NSUTF8StringEncoding]];
NSURLResponse *response;
NSError *err;
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err];
NSString *content = [NSString stringWithUTF8String:[responseData bytes]];
NSLog(@"%@",content);发布于 2015-02-04 05:20:34
确保将JSON作为"multipart/form-data“发送,而不是作为原始的"application/json”post主体发送。
我的HTTPClient:
private static async void GetStatus2()
{
using (var client = new HttpClient())
{
using (var content = new MultipartFormDataContent())
{
string refId = "5e6c4d61-554c-42cc-ac34-cf3f3c5ba36d";
string writeToken = "ueBq0azalcY3KhCxNPsiGyv-aH4kOQUxpm5YXX6vsT2DIE9W3d5MPQ..";
var statusRequest = new GetStatusRequest(refId, writeToken);
var statusRequestStr = JsonConvert.SerializeObject(statusRequest);
//Content-Disposition: form-data; name="json"
var stringContent = new StringContent(statusRequestStr);
stringContent.Headers.Add("Content-Disposition", "form-data; name=\"JSONView\"");
//stringContent.Headers.Add("Content-Type", "multipart/form-data;");
content.Add(stringContent, "json");
var message = client.PostAsync("http://api.brightcove.com/services/post", content);
var input = message.Result.Content.ReadAsStringAsync();
var response = JsonConvert.DeserializeObject<HTTPGetStatusResponse>(await message.Result.Content.ReadAsStringAsync());
Console.WriteLine(JsonConvert.SerializeObject(response));
Console.Read();
if (response.result == HTTPGetStatusResponse.UploadStatus.ERROR)
{
var ex = string.Format("BrightCove Api Error! Error Code: {0}. Error Name: {1}. Error Message: {2}", response.error.code, response.error.name,
response.error.message);
throw new Exception(ex);
}
}
}
}https://stackoverflow.com/questions/24777484
复制相似问题