API Scoring API: Отправить файл

API-интерфейс скоринга для скоринга позволяет пользователю отправлять файл для массовой рассылки по электронной почте. Тип содержимого должен быть multipart / form-data. Пожалуйста, обратитесь к примеру C # для деталей.

POST / V2 / ОЦЕНКА / ОТПРАВКА

URL API: https://bulkapi.zerobounce.net/v2/scoring/sendfile

Параметры URL

  • ПАРАМЕТР
    Обязательный / Дополнительно
    Описание
  • файл
    Обязательный
    CSV или TXT-файл. Содержимое байтового массива для переданного файла. Заголовок содержимого является типом "text / csv"
  • api_key
    Обязательный
    Ваш ключ API, найденный в вашем аккаунте
  • email_address_column
    Обязательный
    Индекс столбца адреса электронной почты в файле. Индекс начинается с 1
  • return_url
    НЕОБЯЗАТЕЛЬНЫЙ
    URL будет использоваться в качестве обратного вызова после завершения услуги скоринга
  • has_header_row
    НЕОБЯЗАТЕЛЬНЫЙ
    Если первая строка из представленного файла является строкой заголовка. Правда или ложь

Если return_url был указан в данных многочастной формы во время запроса файла отправки, мы отправим следующие данные в URL, когда процесс проверки будет завершен.


                {
                  file_id": "aaaaaaaa-zzzz-xxxx-yyyy-5003727fffff",
                  "имя файла": "Ваш файл name.csv", 
                  "дата загрузки": "10/20/2018 4:35: 58 PM" 
                }
                

Отправить образцы кода файла

  • Visual Basic
  • C#
  • PHP
  • Ява
  • Питон
  • СВИФТ
  • Цель С
  • Android Java
      
'Отправить образец файла в VB.net

Общественности Класс SendFileStatus
   Общественности Имущество success Как Логический
   Общественности Имущество message Как Строка
   Общественности Имущество file_name Как Строка
   Общественности Имущество file_id Как Строка
Конец Класс

Частный Общий Суб SendFileAPITest()
   Тусклый fileFullPath Как Строка = $"полный путь к файлу csv или txt"  ' обязательный
   Тусклый apiKey Как Строка = "замени свой ключ api здесь"              ' обязательный
   Тусклый emailAddressColumn Как Целое число = 2  ' обязательный
   Тусклый ipAddressColumn Как Целое число? = 11   ' по желанию
   Тусклый hasHeaderRow Как Логический? = Правда    ' по желанию
   Тусклый returnUrl Как Строка = Ничего такого      ' по желанию

   Пытаться
       Тусклый sendFileStatus Как SendFileStatus = SendFile(fileFullPath, apiKey, emailAddressColumn, ipAddressColumn, hasHeaderRow, returnUrl).Result
       Console.Напишите(JsonConvert.SerializeObject(sendFileStatus, Formatting.Indented))
   Поймать ex Как Exception
       Console.Напишите(ex.InnerException.Message)
   Конец Пытаться

   Console.ReadKey()
Конец Суб

Общественности Общий Async Функция SendFile(ByVal fileFullPath Как Строка, 
                                     ByVal apiKey Как Строка, 
                                     ByVal emailAddressColumn Как Целое число, 
                                     ByVal НЕОБЯЗАТЕЛЬНЫЙ ipAddressColumn Как Целое число? = Ничего такого, 
                                     ByVal НЕОБЯЗАТЕЛЬНЫЙ hasHeaderRow Как Логический? = Ничего такого, 
                                     ByVal НЕОБЯЗАТЕЛЬНЫЙ returnUrl Как Строка = Ничего такого) Как Task(Из SendFileStatus)

   Если Строка.IsNullOrEmpty(fileFullPath) Затем Бросать Новый Exception(«Ошибка: fileFullPath требуется»)
   Если Строка.IsNullOrEmpty(apiKey) Затем Бросать Новый Exception(«Ошибка: требуется apiKey»)
   Тусклый fi = Новый FileInfo(fileFullPath)
   Тусклый fileContents = File.ReadAllBytes(fi.FullName)
   Тусклый fileName = fi.Имя
   Тусклый uri Как Uri = Новый Uri("https://bulkapi.zerobounce.net/v2/scoring/sendfile")

   С помощью client = Новый HttpClient()

       С помощью request = Новый HttpRequestMessage(HttpMethod.Post, uri)
           Тусклый multiPartContent Как MultipartFormDataContent = Новый MultipartFormDataContent()
           Тусклый byteArrayContent Как ByteArrayContent = Новый ByteArrayContent(fileContents)
           byteArrayContent.Headers.Add("Тип содержимого", "текст / csv")
           multiPartContent.Add(byteArrayContent, "файл", fileName)
           multiPartContent.Add(Новый StringContent(apiKey), "api_key")
           multiPartContent.Add(Новый StringContent(emailAddressColumn.ToString()), "email_address_column")
           Если ipAddressColumn Не является Ничего такого Затем multiPartContent.Add(Новый StringContent(ipAddressColumn.ToString()), "ip_address_column")
           Если hasHeaderRow Не является Ничего такого Затем multiPartContent.Add(Новый StringContent(Если((hasHeaderRow = Правда), "правда", "ложный")), "has_header_row")
           Если returnUrl Не является Ничего такого Затем multiPartContent.Add(Новый StringContent(returnUrl.ToString()), "return_url")
           request.Content = multiPartContent

           С помощью response = Await client.SendAsync(request, HttpCompletionOption.ResponseContentRead, CancellationToken.None).ConfigureAwait(Ложь)
               Тусклый content = Await response.Content.ReadAsStringAsync()

               Если response.IsSuccessStatusCode = Ложь Затем
                   Тусклый ошибка Как Строка = $"StatusCode = {CInt(response.StatusCode)}, Content = {content}"
                   Бросать Новый Exception(ошибка)
               Конец Если

               Вернуть JsonConvert.DeserializeObject(Из SendFileStatus)(content)
           Конец С помощью
       Конец С помощью
   Конец С помощью
Конец Функция
   

// Отправить образец файла в C #

Общественности Класс Sendfilestatus
{
   Общественности bool success { получить; задавать; }
   Общественности Строка message { получить; задавать; }
   Общественности Строка file_name { получить; задавать; }
   Общественности Строка file_id { получить; задавать; }
}

Частный статический пустота Sendfileapitest()
{
   Строка fileFullPath = $"полный путь к файлу csv или txt";  //обязательный
   Строка apiKey = "замени свой ключ api здесь";  //обязательный       
   инт emailAddressColumn = 2;  //обязательный
   инт? ipAddressColumn = 11;  //Необязательный
   bool? hasHeaderRow = Правда;  //Необязательный
   Строка returnUrl = ноль;  //Необязательный

   Пытаться
   {
       Sendfilestatus sendFileStatus = Отправить файл(fileFullPath, apiKey, emailAddressColumn, ipAddressColumn, hasHeaderRow, returnUrl).Result;
       Console.Напишите(JsonConvert.Serializeobject(sendFileStatus, Formatting.Indented));
   }
   Поймать (Исключение ex)
   {
       Console.Напишите(ex.InnerException.Message);
   }

   Console.ReadKey();
}

Общественности статический асинхронной Task<SendFileStatus> Отправить файл(Строка fileFullPath, Строка apiKey, инт emailAddressColumn, 
                                           инт? ipAddressColumn = ноль, bool? hasHeaderRow = ноль, Строка returnUrl = ноль)
{
   Если (Строка.Isnullorempty(fileFullPath))
       Бросать Новый Исключение(«Ошибка: fileFullPath требуется»);
   Если (Строка.Isnullorempty(apiKey))
       Бросать Новый Исключение(«Ошибка: требуется apiKey»);

   вар fi = Новый FileInfo(fileFullPath);
   вар fileContents = File.Readallbytes(fi.FullName);
   вар fileName = fi.Name;

   URI uri = Новый URI(@"https://bulkapi.zerobounce.net/v2/scoring/sendfile");

   С помощью (вар client = Новый HttpClient())
   С помощью (вар request = Новый Httprequestmessage(HttpMethod.Post, uri))
   {
       Multipartformdatacontent multiPartContent = Новый Multipartformdatacontent();
       Bytearraycontent byteArrayContent = Новый Bytearraycontent(fileContents);
       byteArrayContent.Headers.Добавить("Тип содержимого", "текст / csv");
       multiPartContent.Добавить(byteArrayContent, "файл", fileName);
       multiPartContent.Добавить(Новый Stringcontent(apiKey), "api_key");
       multiPartContent.Добавить(Новый Stringcontent(emailAddressColumn.Нанизывать()), "email_address_column");
       Если (ipAddressColumn != ноль)
           multiPartContent.Добавить(Новый Stringcontent(ipAddressColumn.Нанизывать()), "ip_address_column");
       Если (hasHeaderRow != ноль)
           multiPartContent.Добавить(Новый Stringcontent((hasHeaderRow == Правда) ? "правда" : "ложный"), "has_header_row");
       Если (returnUrl != ноль)
           multiPartContent.Добавить(Новый Stringcontent(returnUrl.Нанизывать()), "return_url");

       request.Content = multiPartContent;

       С помощью (вар response = ждите client.SendAsync(request, HttpCompletionOption.ResponseContentRead, CancellationToken.None).Configureawait(Ложь))
       {
           вар content = ждите response.Content.Readasstringasync();

           Если (response.IsSuccessStatusCode == Ложь)
           {
               вар error = $"StatusCode = {(int) response.StatusCode}, Content = {content}";
               Бросать Новый Исключение(error);
           }

           Вернуть JsonConvert.Deserializeobject<Sendfilestatus>(content);
       }
   }
}
   

 <?php

$ завиток = curl_init();

curl_setopt_array($ завиток, массив(
 CURLOPT_URL => "https://bulkapi.zerobounce.net/v2/scoring/sendfile",
 CURLOPT_RETURNTRANSFER => Правда,
 CURLOPT_ENCODING => "",
 CURLOPT_MAXREDIRS => 10,
 CURLOPT_TIMEOUT => 30,
 CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
 CURLOPT_CUSTOMREQUEST => "ПОЧТА",
 CURLOPT_POSTFIELDS => "------ WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name ="api_key"replacewithyours ------ WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name ="email_address_column"replacewithyours ------ WebKitFormBoundary7MA4YWxkTrZu0gW--",
 CURLOPT_HTTPHEADER => массив(
   «Почтальон-токен: fae6714d-dc09- 4 e08-b50d-c97030603b61»,
   "контроль кеша: нет кеша",
   "тип контента: multipart / form-data; border = ---- WebKitFormBoundary7MA4YWxkTrZu0gW"
 ),
));

$ ответ = curl_exec($ завиток);
$ err = curl_error($ завиток);

curl_close($ завиток);

Если ($ err) {
 эхо "Ошибка cURL #:" . $ err;
} еще {
 эхо $ ответ;
}
?>
   

 Okhttpclient client = Новый Okhttpclient();

 MediaType mediaType = MediaType.синтаксический анализ("multipart / form-data; border = ---- WebKitFormBoundary7MA4YWxkTrZu0gW");
 Requestbody body = Requestbody.создайте(mediaType, "------Webkitformboundary7ma4ywxktrzu0gw
Содержание-Диспозиция: form-data; name="api_key"

replacewithyours
------Webkitformboundary7ma4ywxktrzu0gw
Содержание-Диспозиция: form-data; name="email_address_column"

replacewithyours
------Webkitformboundary7ma4ywxktrzu0gw--");
 Запрос request = Новый Запрос.СТРОИТЕЛЬ()
   .url("https://bulkapi.zerobounce.net/v2/scoring/sendfile")
   .после(body)
   .AddHeader("Тип содержимого", "multipart / form-data; border = ---- WebKitFormBoundary7MA4YWxkTrZu0gW")
   .AddHeader(«кэш-контроль», «нет кэша»)
   .AddHeader(«Почтальон-Токен», "25 d608ba- 6 cb5- 4 c8c- 88 d7-d47276c67d8e")
   .строить();
 
 ОТВЕТ response = client.новый вызов(request).выполнять();
   

 импортировать http.client

 conn = http.client.HTTPConnection("bulkapi, zerobounce, чистый")
 
 payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="api_key"

replacewithyours
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="email_address_column"

replacewithyours
------WebKitFormBoundary7MA4YWxkTrZu0gW--"
 
 headers = {
     'тип содержимого': "multipart / form-data; border = ---- WebKitFormBoundary7MA4YWxkTrZu0gW",
     «кэш-контроль»: «нет кэша»,
     «Почтальон-Токен»: "bc455eda- 9884-417 е-b16f- 3 a5fef3f7540"
     }
 
 conn.request("ПОЧТА", "v2, sendfile", payload, headers)
 
 res = conn.getresponse()
 data = res.read()
 
 распечатать(data.decode("utf- 8"))
   
   

 импортировать ФОНД

 позволяь headers = [
   "Тип содержимого": "multipart / form-data; border = ---- WebKitFormBoundary7MA4YWxkTrZu0gW",
   «кэш-контроль»: «нет кэша»,
   «Почтальон-Токен»: "2 f68fcc3-d9b6- 458 ь-b613- 56 f6a03e6617"
 ]
 позволяь parameters = [
   [
     "название": "api_key",
     "стоимость": "replacewithyours"
   ],
   [
     "название": "email_address_column",
     "стоимость": "replacewithyours"
   ]
 ]
 
 позволяь boundary = "---- WebKitFormBoundary7MA4YWxkTrZu0gW"
 
 вар body = ""
 вар error: Nserror? = нль
 для param в parameters {
   позволяь paramName = param["название"]!
   body += "--(boundary)
"
   body += "Content-Disposition: form-data; name ="(paramName)""
   Если позволяь filename = param["имя файла"] {
     позволяь contentType = param["Тип содержимого"]!
     позволяь fileContent = Строка(contentsOfFile: filename, encoding: Строка.Кодирование.utf8)
     Если (error != нль) {
       распечатать(error)
     }
     body += "; имя файла ="(filename)"
"
     body += "Содержание-Тип: (contentType)

"
     body += fileContent
   } еще Если позволяь paramValue = param["стоимость"] {
     body += "

(paramValue)"
   }
 }
 
 позволяь request = Nsmutableurlrequest(url: NSURL(string: "https://bulkapi.zerobounce.net/v2/scoring/sendfile")! Как url, 
                                       cachePolicy: .useProtocolCachePolicy,
                                       timeoutInterval: 10.0)
 request.httpMethod = "ПОЧТА"
 request.allHTTPHeaderFields = headers
 request.httpBody = postData Как Данные
 
 позволяь session = Urlsession.shared
 позволяь dataTask = session.datatask(with: request Как URLRequest, completionHandler: { (data, response, error) -> пустота в
   Если (error != нль) {
     распечатать(error)
   } еще {
     позволяь httpResponse = response Как? Httpurlresponse
     распечатать(httpResponse)
   }
 })
 
 dataTask.продолжить()
   

// Пожалуйста, выберите язык VB или C # для отправки файла примера импорта #  <Foundation/Foundation.h>

NSDictionary *headers = @{ @"тип содержимого": @ "multipart / form-data; border = ---- WebKitFormBoundary7MA4YWxkTrZu0gW",
                           @ «кэш-контроль»: @ «нет кэша»,
                           @ «Почтальон-Токен»: @ "92 c5b06e- 624 f- 44 е5-bd86-f537bc6cef67" };
NSArray *parameters = @[ @{ @"название": @ "api_key", @"стоимость": @ "replacewithyours" },
                         @{ @"название": @ "email_address_column", @"стоимость": @ "replacewithyours" } ];
NSString *boundary = @ "---- WebKitFormBoundary7MA4YWxkTrZu0gW";

NSError *error;
NSMutableString *body = [NSMutableString string];
для (NSDictionary *param в parameters) {
   [body appendFormat:@"--%@
", boundary];
   Если (param[@"имя файла"]) {
       [body appendFormat:@ "Content-Disposition: form-data; name ="%@ "; filename ="%@"
", парам [@"name"], парам [@"fileName"]];
       [body appendFormat:@"Content-Type: %@

", парам [@"contentType"]];
       [body appendFormat:@"%@", [NSString stringWithContentsOfFile:param[@"имя файла"] encoding:NSUTF8StringEncoding error:&error]];
       Если (error) {
           NSLog(@"%@", error);
       }
   } еще {
       [body appendFormat:@ "Content-Disposition: form-data; name ="%@"

", парам [@"name"]];
       [body appendFormat:@"%@", param[@"стоимость"]];
   }
}
[body appendFormat:@"
--%@--
", boundary];
NSData *postData = [body dataUsingEncoding:NSUTF8StringEncoding];

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://bulkapi.zerobounce.net/v2/scoring/sendfile"]
                                                       cachePolicy:NSURLRequestUseProtocolCachePolicy
                                                   timeoutInterval:10.0];
[request setHTTPMethod:@"ПОЧТА"];
[request setAllHTTPHeaderFields:headers];
[request setHTTPBody:postData];

NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
                                           completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
                                               Если (error) {
                                                   NSLog(@"%@", error);
                                               } еще {
                                                   NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
                                                   NSLog(@"%@", httpResponse);
                                               }
                                           }];
[dataTask resume];
   

//N/A
   

Ответ конечной точки

Успешный ответ

      
{
 «успех»: Правда,
 "сообщение": «Файл принят»,
 "имя файла": "Ваш файл name.csv",
 "file_id": "aaaaaaaa-zzzz-хххх-yyyy- 5003727 fffff"
}
   

Овет об ошибке

      
   {
     «успех»: Ложь,
     "сообщение": [
         "Сообщения об ошибках"
     ]
 }