[Java] MultipartEntity неверно выдает Content-Length

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by xophet, 24 Jul 2012.

  1. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Всем привет!
    Использую в Java как HTTP-клиент классы от Appache.
    И пытаюсь накорябать класс для AntiGate.
    Code:
    MultipartEntity data = new MultipartEntity();
    try {
                data.addPart("method",new StringBody("post"));
                data.addPart("key",new StringBody(settings.key));
                if (settings.calc)
                    data.addPart("calc",new StringBody("1"));
                if (settings.numeric)
                    data.addPart("numeric",new StringBody("1"));
                if (settings.phrase)
                    data.addPart("phrase", new StringBody("1"));
                if (settings.regSens)
                    data.addPart("regsense", new StringBody("1"));
                if (settings.russian)
                    data.addPart("is_russian",new StringBody("1"));
                if (settings.minLen!=0)
                    data.addPart("min_len", new StringBody(Integer.toString(settings.minLen)));
                if (settings.maxLen!=0)
                    data.addPart("max_len", new StringBody(Integer.toString(settings.maxLen)));
    [COLOR=YellowGreen]System.out.println(Long.toString(data.getContentLength()));
                file=new InputStreamBody(captcha,fileName);
                data.addPart("file", file);
                System.out.println(Long.toString(data.getContentLength()));[/COLOR]
            } catch (UnsupportedEncodingException ex) {
            }
    результат выполнения:
    Code:
    402
    -1
    т.е. сразу после добавления файла в MultipartEntity неверно выдается Content-Length.
    Может кто сталкивался?
    P.S. хотя проверяю сниффером, файл отправляется (сервер возвращает ответ: 411 нужен Content-Length, я его вот и пытаюсь определить, чтобы добавить в заголовки)
     
    #1 xophet, 24 Jul 2012
    Last edited: 24 Jul 2012
  2. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Все, нашел реализацию класса InputStreamBody
    Code:
    public long getContentLength() {
              return -1;
    }
    сделал класс-заглушку с реализованным методом, буду надеяться аппачи скоро и свой класс допилят.
    Code:
    @Override
        public long getContentLength() {
            long s=-1;
            try {
                s=in.available();
            } catch (IOException ex) {
                
            }
            return s;
        }
    Всем спасибо за внимание.
     
Loading...
Similar Threads - Java MultipartEntity неверно
  1. b3
    Replies:
    4
    Views:
    3,470