Nie można przesłać nazwy pliku ze znakiem specjalnym do REST dysku google
Dostaję błąd, gdy próbuję przesłać plik do api dysku Google z moją aplikacją internetową, a plik ma postać z akcentem, na przykład „ç”.
Przesyłam plik z dwoma żądaniami, początkowym żądaniem, które zawiera informacje o pliku, i zwraca uri do miejsca, w którym plik powinien zostać przesłany, i kolejnym żądaniem z samym plikiem.
Błąd występuje w pierwszym żądaniu (ten z informacją o pliku).
Zwrócony błąd to po prostu „400 - złe żądanie” i nie mam pojęcia, jak przesłać plik za pomocą tego rodzaju znaków.
Oto przykład żądania wygenerowanego przez moją aplikację podczas próby przesłania pliku obrazu gif.
Content-Type: application/json; charset=UTF-8
X-Upload-Content-Length: 257
Authorization: Bearer ******
X-Upload-Content-Type: image/gif
Host: www.googleapis.com
Content-Length: 126
Expect: 100-continue
Treść żądania zawiera tylko obiekt json z danymi pliku, słyszy przykład kodu, w którym skonfigurowano to początkowe żądanie:
private WebRequest CreateInitialUploadRequest(String parentId, String title, String mimeType)
{
String uri = "https://www.googleapis.com/upload/drive/v2/files?uploadType=resumable&access_token=" + AUTH_KEY;
System.Net.WebRequest request = this.WebRequestFactory.CreateWebRequest(uri);
request.Method = "POST";
request.ContentType = "application/json; charset=UTF-8";
request.Headers.Add("X-Upload-Content-Length", length.ToString());
request.Headers.Add("Authorization", string.Format("Bearer {0}", AUTH_KEY));
request.Headers.Add("X-Upload-Content-Type", mimeType);
//Setup parent id folder for file
object[] parents = {new {id = parentId}};
object jsonObject = new
{
title = title,
mimeType = mimeType,
description = "foo bar",
parents = parents
};
String strData = new JavaScriptSerializer().Serialize(jsonObject);
byte[] data = Encoding.UTF8.GetBytes(strData);
request.ContentLength = data.Length;
var stream = request.GetRequestStream();
stream.Write(data, 0, data.Length);
stream.Close();
return request;
}
Kiedy próbuję wywołać taką metodę:
WebRequest initialRequest = CreateInitialUploadRequest("valid-parent-folder", "invalid file ç", "image/gif");
//I get an 'bad request' http error code 400 in the following line:
initialRequest.GetResponse();
Czy powinienem jakoś zakodować żądanie?