/// <exception cref="System.IO.IOException"></exception> private void AddDocWithId(string docId, string attachmentName) { string docJson; if (attachmentName != null) { // add attachment to document InputStream attachmentStream = GetAsset(attachmentName); ByteArrayOutputStream baos = new ByteArrayOutputStream(); IOUtils.Copy(attachmentStream, baos); string attachmentBase64 = Base64.EncodeBytes(baos.ToByteArray()); docJson = string.Format("{\"foo\":1,\"bar\":false, \"_attachments\": { \"i_use_couchdb.png\": { \"content_type\": \"image/png\", \"data\": \"%s\" } } }" , attachmentBase64); } else { docJson = "{\"foo\":1,\"bar\":false}"; } // push a document to server Uri replicationUrlTrailingDoc1 = new Uri(string.Format("%s/%s", GetReplicationURL ().ToExternalForm(), docId)); Uri pathToDoc1 = new Uri(replicationUrlTrailingDoc1, docId); Log.D(Tag, "Send http request to " + pathToDoc1); CountDownLatch httpRequestDoneSignal = new CountDownLatch(1); BackgroundTask getDocTask = new _BackgroundTask_376(pathToDoc1, docJson, httpRequestDoneSignal ); getDocTask.Execute(); Log.D(Tag, "Waiting for http request to finish"); try { httpRequestDoneSignal.Await(300, TimeUnit.Seconds); Log.D(Tag, "http request finished"); } catch (Exception e) { Sharpen.Runtime.PrintStackTrace(e); } }