Memsource Legacy API

File Data Type

Important:

Memsource Legacy API will be deprecated in 2020. It is disabled for all new organization accounts created after May 7th 2019.
Please use Memsource REST API instead.

file's data type is used to post binary data into various API calls. Every API call that contains at least one argument of type file has to meet the following requirements:

  • HTTP POST method must be used
  • Multipart/form-data request as described in HTML specs must be formed

Examples

Java HttpClient Example

HttpClient httpclient = new DefaultHttpClient(); 
HttpPost httpPost = new HttpPost(webServerUrl);
MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE, null, Charset.forName("UTF-8"));
StringBody taskPart;
StringBody formatPart;
StringBody saveToTransMemoryPart;
StringBody setCompletedPart;
ByteArrayBody fileContentPart;
// ... fill variables with data ... //

reqEntity.addPart("task", taskPart);
reqEntity.addPart("format", formatPart);
reqEntity.addPart("saveToTransMemory", saveToTransMemoryPart);
reqEntity.addPart("setCompleted", setCompletedPart);
reqEntity.addPart("bilingualFile", fileContentPart);
httpPost.setEntity(reqEntity);

C++ Qt Example

QHttpMultiPart* multiPartData = new QHttpMultiPart( QHttpMultiPart::FormDataType );
QBuffer* buffer = new QBuffer( multiPartData );
buffer->open( QIODevice::WriteOnly );
// ... fill buffer with data ... //
writer.writeTo( buffer );
buffer->close();

QHttpPart filePart;
filePart.setHeader( QNetworkRequest::ContentTypeHeader, QVariant( "application/octet-stream" ) );
filePart.setHeader( QNetworkRequest::ContentDispositionHeader, QVariant( QString( "form-data; name=\"bilingualFile\"; filename=\"" ) + model->getFileInfos()[0].original + "\"" ) );
buffer->open( QIODevice::ReadOnly );
filePart.setBodyDevice( buffer );
multiPartData->append( filePart );