我正在使用客户端Web API在第三方应用程序中创建任务。我可以创建任务并在各处分发,但是现在我一直无法将文件上传到第三方应用程序。
他们没有给我太多有关其api如何处理此POST的信息。相反,他们向我展示了200 OK响应。
我现在尝试了一些新的东西,并决定在我的图书馆中使用Restsharp。
当我上传文件时,我不确定如何上传实际文件,我已成功将其转换为base64,并且想知道如果可能的话,我会将base64放在请求正文中的什么位置。
第三方应用程序确实在任务中创建了一个文件,但由于请求未指向文件,因此它具有0个字节。
我已经尝试过分离参数,以便不使用字符串,但是一位开发人员建议尝试使用它。
我也尝试过创建一个formupload类,然后引用它来上传文件。如果需要,可以提供代码。
/* Greate uniqueGuid for EntityID */
Guid guid = Guid.NewGuid();
string EntityID = guid.ToString();
// string val = guid.ToString();
// EntityID = "\"" + val + "\"";
SetTokenValue("uniqueGuid", EntityID);
var client = new
RestClient("https://www.notallowed.com/media");
var request = new RestRequest(Method.POST);
bearerToken = TokenReplace("%(BearerToken)");
if (bearerToken != null)
{
request.AddHeader("Authorization", "Bearer " + bearerToken);
SetTokenValue("PDF_Token", bearerToken);
}
request.AddHeader("cache-control", "no-cache");
request.AddHeader("accept", "*/*; q=0.5, application/json");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("accept-encoding", "gzip, deflate, br");
request.AddHeader("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW");
request.AddParameter("multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW", "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"EntityType\"\r\n\r\npredistributed-tasks\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"EntityId\"\r\n\r\n"+ EntityID +"\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"LocaleIsoCode\"\r\n\r\nen-US\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"files\"; filename=\"UntitledContract.pdf\"\r\nContent-Type: application/pdf\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
HttpStatusCode statusCode = response.StatusCode;
int numericCode = (int) statusCode;
SetTokenValue("PDF_StatusCode", numericCode);
request.OnBeforeDeserialization = resp => { resp.ContentType = "application/json";};
我的预期结果是使file参数指向物理文件,并使其使用该文件并将其上传到创建的任务中。
实际输出是实际上没有文件上传,而是由第三方应用程序为该文件创建占位符。