Формировать Домином Get/put Запросы

Тема в разделе "Lotus - Программирование", создана пользователем ToxaRat, 4 дек 2014.

  1. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    Есть задача, чтобы агент по какому-то событию формировал GET/PUT запросы такая себе синхронизация со сторонней внешней системой.
    Я чаще всего делал через прослойку - ява библиотеку, где нужную мне функцию вызывал скриптом и орудовал потом с полученной стрингой.
    Но делал так только GET запросы

    а нет у кого такой библиотеке с PUT запросами?
     
  2. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
  3. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
  4. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    спасибо, помогло
    а с кодировкой не поможете?
    если ответ JSON
    то имею такое от GET
    пофиг что делаю
    conn.setRequestProperty("Content-Type", "UTF-8");
    conn.setRequestProperty("Content-Type", "application/json");
    и прочее

    строка не меняется, видно что русский идёт в двухбайтовой кодировки, как-то можно всю эту строку сразу преобразовать нормально?
    странно что любой браузер показывает подобные GET запросы корректно
     
  5. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
  6. erdi

    erdi Well-Known Member

    Регистрация:
    20 авг 2008
    Сообщения:
    261
    Симпатии:
    36
    судя по картинке кодировок, которую я выкладывал ранее на форуме, у тебя идет преобразование UTF8 в Win1251
    данный GET запрос откуда получаешь? из Java? По-умолчанию java выставляет именно Win1251 кодировку как для всего агента/либы, так и по отдельности для каждого java файла. Иногда и это влияет на получаемую кодировку
     
  7. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    да походу так и есть
    плюнул на всё написал свой конвертер
     
  8. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    чё-то я совсем запутался, конвертер не помогает, часть букв идёт не так
     
  9. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    вроде бы разобрался, ява действительно возвращает в кодировке 1251
    преобразование на клиенте происходит нормально, а вот на сервере нет
    пока не выставил везде дефаултовый язык как русский сервер нормально преобразовывать не мог
     
  10. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    как пр-ло берет за основу настройки ОС
    кот. в русской виндятке - 1251
    можно принудительно преобразовывать <!--shcode--><pre><code class='java'>final String name =
    new String(request.getParameter("name").getBytes("iso-8859-1"), "UTF-8");[/CODE]но необходимо понимать причину искажений, иначе результат будет непредсказуем...
     
  11. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    на клиенте это работает, на сервере нет
    уже начинаю думать что на 64 битке это такая же проблема как с ODBC
     
  12. Ruslan280

    Ruslan280 Well-Known Member

    Регистрация:
    18 апр 2013
    Сообщения:
    49
    Симпатии:
    0
    мой рабочий пост файла с параметрами апачевской либой . см по кодировке-может подойдет

    Код (Text):
     public static boolean SendPost(String url, String filepath, String docname,
    String docnumber, String docdate, String er[]) {
    boolean result = false;

    XPathFactory xpathFactory = XPathFactory. newInstance();
    XPath xpath = xpathFactory.newXPath();

    try {

    CloseableHttpClient httpclient = HttpClients.createDefault();

    try {
    HttpPost httppost = new HttpPost(url);

    // httppost .setHeader("Content-Type",
    // "multipart /form-data; charset=UTF-8");
    FileBody bin = new FileBody(new File(filepath));
    StringBody saction = new StringBody("document-add" ,
    ContentType. TEXT_PLAIN);
    StringBody sdocname = new StringBody(docname,
    ContentType. TEXT_PLAIN.withCharset(Charset
    . forName("UTF-8")));
    StringBody sdocnumber = new StringBody(docnumber,
    ContentType. TEXT_PLAIN.withCharset(Charset
    . forName("UTF-8")));
    StringBody sdocdate = new StringBody(docdate,
    ContentType. TEXT_PLAIN);

    HttpEntity reqEntity = MultipartEntityBuilder.create().addPart(
    "file", bin).addPart("action" , saction).addPart("name" ,
    sdocname).addPart( "number", sdocnumber).addPart("date" ,
    sdocdate)
    // .setCharset(Charset.forName("UTF-8"))
    .build();

    httppost.setEntity(reqEntity);
    System. out.println("executing request "
    + httppost.getRequestLine());

    CloseableHttpResponse response = httpclient.execute(httppost);

    try {
    System. out
    .println( "----------------------------------------" );
    System. out
    .println(response.getStatusLine().getStatusCode());
    Integer statuscode = response.getStatusLine()
    .getStatusCode();

    if (statuscode != 200) {
    System. out.println("ошибка -сервер вернул код "
    + statuscode);
    er[0] = "ошибка -сервер вернул код " + statuscode;
    result = false;
    }

    HttpEntity resEntity = response.getEntity();
    if (resEntity != null) {
    System. out.println("Response content length: "
    + resEntity.getContentLength());

    String xml = EntityUtils.toString(resEntity, "UTF-8");
    System. out.println(xml);
    InputSource source = new InputSource(new StringReader(
    xml));

    DocumentBuilderFactory dbf = DocumentBuilderFactory
    . newInstance();
    DocumentBuilder db = dbf.newDocumentBuilder();
    org.w3c.dom.Document document = db.parse(source);

    String code = xpath.evaluate("/result/code" , document);
    String msg = xpath
    .evaluate( "/result/message", document);
    String id = xpath.evaluate("/result/document_id" ,
    document);

    System. out.println("code=" + code);
    System. out.println("message=" + msg);
    System. out.println("id=" + id);

    if (code.equals("ok" )) {
    er[1] = id;
    result = true;
    } else {
    er[0] = "сервер вернул " + msg;
    result = false;
    }

    }
    EntityUtils. consume(resEntity);
    } finally {
    response.close();
    }
    } finally {
    httpclient.close();

    }
    } catch (ClientProtocolException ex) {
    er[0] = "ошибка протокола или адреса " + url;
    System. out.println("ошибка протокола или адреса " + url);
    System. out.println(ex.toString());
    result = false;
    } catch (UnknownHostException ex) {
    er[0] = "ошибка в адресе " + url;
    System. out.println("ошибка в адресе " + url);
    System. out.println(ex.toString());
    result = false;
    } catch (Exception e) {
    er[0] = "неизвестная ошибка при отправке";
    e.printStackTrace();
    result = false;
    } finally {

    }
    return result;
    }
     
Загрузка...

Поделиться этой страницей