Коллеги, всем привет!!! Вот уже пару дней мучаюсь с траблой, не получается отправить csv файл в POST реквесте. Перерыл пол интернета, перепробовал кучу всего, но не работает.
{
"httpStatus" : "PAYLOAD_TOO_LARGE",
"error" : "Preconditions failed!",
"errorDescription" : "Current request is not a multipart request"
}
Хотя, как видно на скрине, галка мультипарта стоит
В постмене все работает отлично
Фронта еще нет чтоб слизать запрос
Кто сталкивался с подобной проблемой или делал подобное? Помогите советом или добрым словом поддержки)) Второй день уже как женюсь с этим запросом
Попробуйте добавить в HTTP Header Manager поле с именем Content-Type и значением multipart/related; boundary=jmeter_is_great
а галку мультипарт отключите.
Отправил запрос с постмана и записал джметр рекордером. При отправке с джметра та же ошибка:
{
“httpStatus” : “PAYLOAD_TOO_LARGE”,
“error” : “Preconditions failed!”,
“errorDescription” : “Current request is not a multipart request”
}
Выход нашел. Написал запрос на джаве и скормил джметру. Все ок, работает)
Завтра выложу сюда код и инструкцию как что)
Всем спасибо за советы и поддержку))
public class CsvUploadSampler extends AbstractJavaSamplerClient implements Serializable {
public SampleResult runTest(JavaSamplerContext context) {
//Вытягиваем необхожимые переменные джметра
String protocol = context.getJMeterVariables().get("protocol") + "://";
String apiUrl = context.getJMeterVariables().get("uapi-url");
String path = context.getJMeterVariables().get("load-mobs-path");
String portVar = context.getJMeterVariables().get("port");
String port = portVar != null ? ":" + portParam : "";
String appId = context.getJMeterVariables().get("app-id");
SampleResult result = new SampleResult();
result.sampleStart();
try {
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
HttpEntity entity = MultipartEntityBuilder.create()
.addBinaryBody("csv", new File("mobs.csv"), ContentType.create("text/csv"), "mobs.csv")
.build();
HttpPost httpPost = new HttpPost(protocol + apiUrl + port + path + "?app_id=" + appId);
httpPost.setEntity(entity);
HttpResponse response = httpClient.execute(httpPost);
HttpEntity responseEntity = response.getEntity();
result.sampleEnd();
result.setSuccessful( true );
result.setResponseMessage( "Successfully performed action" );
result.setResponseCodeOK(); // сетаем 200
//сетаем в резалт ответ сервера
result.setResponseData(EntityUtils.toString(responseEntity, "UTF-8"), "UTF-8");
} catch (Exception e) {
result.sampleEnd();
result.setSuccessful( false );
result.setResponseMessage( "Exception: " + e );
// достаем стектрейс
java.io.StringWriter stringWriter = new java.io.StringWriter();
e.printStackTrace( new java.io.PrintWriter( stringWriter ) );
result.setResponseData( stringWriter.toString(), "UTF-8" );
result.setDataType( org.apache.jmeter.samplers.SampleResult.TEXT );
//сетаем код ответа, сюда можно вытащить при желании реальный код ответа сервера
result.setResponseCode( "500" ); }
return result;
}
}
Теперь это запаковываем в джарник (можно в джарник без зависимостей) и копируем (джарник) в папку джметра lib/ext. Перезапускаем джметр, добавляем сэмплеэр Java request ,