Я пытаюсь сделать так (идея из здесь ):
Entry entry = new Entry();
entry.group = new MediaGroup();
entry.group.title = "test title";
entry.group.description = "test description";
entry.group.category = new MediaCategory();
entry.group.category.Cat = "People\n";
AtomContent aContent = new AtomContent();
aContent.entry = entry;
aContent.namespaceDictionary = NAMESPACE_DICTIONARY;
Uri uri = Uri.parse(r.uri);
File file = new File(r.text);
FileContent bContent = new FileContent(file);
// bContent.inputStream = new FileInputStream(r.text);//context.getContentResolver().openInputStream(uri);
Cursor cursor = context.getContentResolver().query(uri, null, null, null, null);
cursor.moveToFirst();
bContent.type = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.MIME_TYPE));
//bContent.length = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.SIZE));
String fileName = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DISPLAY_NAME));
// Build up the POST request
MultipartRelatedContent multiContent = new MultipartRelatedContent();
multiContent.parts.add(aContent);
multiContent.parts.add(bContent);
HttpTransport transport = new ApacheHttpTransport();
HttpRequestFactory requestFactory = transport.createRequestFactory();
// !
HttpRequest request = requestFactory.buildPostRequest(YouTubeUrl.uploadUrl(), multiContent);
GoogleHeaders headers = new GoogleHeaders();
headers.putAll(request.headers);
request.headers = headers;
headers.setSlugFromFileName(fileName);
headers.setDeveloperId(Consts.youtubeDevKey);
headers.setGoogleLogin(accountInfo.password);
// !
request.headers.contentType = multiContent.getType();
// request.headers.contentType = bContent.getType();
request.connectTimeout = 0;
request.readTimeout = 0;
HttpResponse response = request.execute();
String strResponse = NetworkHelper.readResponse(response.getContent());
Используя NetHttpTransport, я получаю «Ошибка ввода-вывода во время системного вызова, сломанный канал»
// Используя ApacheHttpTransport, я получаю «org.apache.http.client.NonRepeatableRequestException: Невозможно повторить запрос с неповторяющимся объектом запроса» через 5-20 секунд.
PS. Мы выяснили, что внутреннее исключение ApacheHttpTransport тоже "Broken Pipe"
Я пытаюсь сделать это на устройстве под управлением Android 2.3.3, используя google-api-client 1.4.1
Есть предложения?