Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/187: Рейтинг темы: голосов - 187, средняя оценка - 4.95
0 / 0 / 0
Регистрация: 12.07.2009
Сообщений: 29
1

Выполнение Http-запроса на передачу файла

20.06.2011, 15:14. Показов 35138. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача такая: "надо передать файл на web-сервер". Метод http-запроса должен быть "POST".
Вопросы:
1. Как выполнить http-запрос из агента на Lotus Script?
2. Как вставить бинарный файл в http-запрос?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.06.2011, 15:14
Ответы с готовыми решениями:

Синхронное выполнение HTTP-запроса
Подскажите, как правильно реализовать следующую задачу. У компонента случается 'CanDeactivate',...

Http POST отправка файла в теле запроса
Всем привет! Пытаюсь отправить файл на сервер, но со стороны сервера мне говорят, что нужно...

Повторное выполнение пакетного файла без запроса на завершение
Добрый день. У меня есть программа,которая должна всегда выполняться. Есть такой код: :st start...

Выполнение http.request http.get
О задаче: Начну с того что мне нужно сделать, мне нужно получить из формы url-адресс и выполнить...

17
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
20.06.2011, 16:29 2
в разрезе задачи - берём java и пишем
можно через LS2J
если будут рекомендовать COM -

Добавлено: http://developers.sun.com/moby... /HTTPPost/

Добавлено: как вариант:
http://codefui.com/snippets/using-httpclie...ry-data-in-java
http://stackoverflow.com/questions/1067655...1068132#1068132
0
0 / 0 / 0
Регистрация: 12.07.2009
Сообщений: 29
21.06.2011, 12:00 3
Проблема в том, что я java не знаю. Совсем не знаю. Есть ли возможность подключить к Lotus методы .NET?
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
21.06.2011, 12:58 4
Цитата Сообщение от shershun4ik
Есть ли возможность подключить к Lotus методы .NET?
не страдайте ... ерундой
java - стандарт для домины и никаких виндо-перудляторов
нечего там учить (в данном случае), особливо ежели шарпей знаете (МС его бессовестно драло с джава)
не ищите себе колья в пятую точку, а пользуйтесь тем - что даёт платформа
код, по ссылкам, запустите (для начала в любой java IDE: Eclipse, NetBeans)
апачевскую либу надо будет распаковать и подсунуть в jvm/lib/ext, для запуска кода в домине
по ссылке всякие туториалы и примеры
0
0 / 0 / 0
Регистрация: 12.07.2009
Сообщений: 29
21.06.2011, 16:18 5
Что учить? Java или JavaScript?
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
21.06.2011, 19:45 6
Цитата Сообщение от shershun4ik
JavaScript
а это-то, здесь, причём?
java учить и выкинуть из головы шарпей - если, конечно, доминой планируете заниматься

да и вобщем
java гораздо распространённей (на ней работает куча глобальных проектов) и имеет больше либ (почти на все случаи жизни), кот. отрабатывались годами..., в отличии от офтопика (.НЕТ ещё неустаканившаяся платформа, сильно зависимая от МС)
ну конечно - если без МС и башляния никак... , но тогда вам и домина никчему ;)
0
0 / 0 / 0
Регистрация: 12.07.2009
Сообщений: 29
21.06.2011, 21:14 7
Пытаюсь разобраться на основании примера

http://stackoverflow.com/questions/1067655...1068132#1068132

Вставляю код в NetBeans и java не видит класс org.apache.http.entity.FileEntity (говорит "неиспользуемый лператор импорта"). Что я делаю не так?

Класс org.apache.http.entity.FileEntity есть в библиотеке httpcore-4.1.jar (раскрываю org.apache.http.entity и там есть FileEntity.class), но java ругается.

Может быть такое, что она не находит используемые в org.apache.http.entity.FileEntity классы: java.io.File, java.io.IOException, java.io.InputStream, java.iutputStream? Java.io стандартно подключается ко всем проектам или я не прав?

Вот как я скопировал код:


Код
/*
* To change thys template, choose Tools | Templates
* and open the template in the editor.
*/
package sendfile;

/**
*
* @author User
*/
import java.io.File;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpVersion;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.FileEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.CoreProtocolPNames;
import org.apache.http.util.EntityUtils;

public class SendFile {


/**
* @param args the command line arguments
*/
public static void main(String[] args) {

HttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);

HttpPost httppost = new HttpPost("http://localhost:9001/upload.php");
File file = new File("c:/TRASH/zaba_1.jpg");

MultipartEntity mpEntity = new MultipartEntity();
ContentBody cbFile = new FileBody(file, "image/jpeg");
mpEntity.addPart("userfile", cbFile);


httppost.setEntity(mpEntity);
System.out.println("executing request " + httppost.getRequestLine());
HttpResponse response = httpclient.execute(httppost);
HttpEntity resEntity = response.getEntity();

System.out.println(response.getStatusLine());
if (resEntity != null) {
System.out.println(EntityUtils.toString(resEntity));
}
if (resEntity != null) {
resEntity.consumeContent();
}

httpclient.getConnectionManager().shutdown();
}

}
0
Zyko
22.06.2011, 11:03 8
Видимо библиотека httpcore-4.1.jar не добавлена в classpath.


Цитата Сообщение от shershun4ik
Может быть такое, что она не находит используемые в org.apache.http.entity.FileEntity классы: java.io.File, java.io.IOException, java.io.InputStream, java.iutputStream? Java.io стандартно подключается ко всем проектам или я не прав?
Да, эти классы идут вместе c любой JRE. Спецально подключать не надо.

ПС: Выложи stacktrace
0 / 0 / 0
Регистрация: 12.07.2009
Сообщений: 29
22.06.2011, 16:43 9
С предыдущим примером я разобрался. Там моя ошибка. Неверно скопировал код.

Есть еще вот такой вот пример:


Код
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class SendFile {

private static String url =
"http://localhost:7000/FileUpload.ashx?basic=1";

public static void main(String[] args) throws IOException {
HttpClient client = new HttpClient();
PostMethod postMethod = new PostMethod(url);

client.setConnectionTimeout(8000);

// Send any XML file as the body of the POST request
File f = new File("D:/MediaID.bin");
System.out.println("File Length = " + f.length());

postMethod.setRequestBody(new FileInputStream(f));
postMethod.setRequestHeader("Content-type",
"text/xml; charset=ISO-8859-1");

int statusCode1 = client.executeMethod(postMethod);

System.out.println("statusLine>>>" + postMethod.getStatusLine());
postMethod.releaseConnection();
}
}
Вопросы по нему:

1. Я не нашел в apache-евской библиотеке httpclient следующие классы:
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;

Где их можно взять?

2. В примере указывается одна строка в залоловке запроса:
postMethod.setRequestHeader("Content-type", "text/xml; charset=ISO-8859-1");

А мне надо передать еще дополнительные значения в заголовке. Как это сделать?
0
Zyko
22.06.2011, 17:17 10
Цитата Сообщение от shershun4ik
1. Я не нашел в apache-евской библиотеке httpclient следующие классы:
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;

Где их можно взять?

2. В примере указывается одна строка в залоловке запроса:
postMethod.setRequestHeader("Content-type", "text/xml; charset=ISO-8859-1");

А мне надо передать еще дополнительные значения в заголовке. Как это сделать?
1. org.apache.commons вроде как устаревший пакет. Искать в старых JARах.

2. postMethod.setRequestHeader - сколько раз вызовешь метод с разными хёдерами, столько ВРОДЕ он их и добавит.
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
22.06.2011, 18:04 11
1. Zeka вам ответил, смотрите другой код (для более новой библиотеки, соответственно и либы др. для импорта)
2. есть разные методы задачи параметров, для разных классов, шукайте здесь сморите экзампелы из архивов
просто для разных ситуаций могут быть свои "подходы"
0
0 / 0 / 0
Регистрация: 12.07.2009
Сообщений: 29
26.06.2011, 11:21 12
Вот такой у меня получился код


Код
package sendfile;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.UsernamePasswordCredentials;
import org.apache.commons.httpclient.auth.AuthScope;
import org.apache.commons.httpclient.Credentials;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class SendFile {

private static String url = "http://localhost:7000/FileUpload.ashx?basic=1";

public static void main(String[] args) throws IOException {
HttpClient client = new HttpClient();
PostMethod postMethod = new PostMethod(url);

client.setConnectionTimeout(8000);
Credentials defaultcreds = new UsernamePasswordCredentials("USER", "**********");
client.getState().setCredentials(AuthScope.ANY, defaultcreds);


// Send any file as the body of the POST request
File f = new File("D:/MediaID.bin");
System.out.println("File Length = " + f.length());
postMethod.setRequestBody(new FileInputStream(f));
postMethod.setRequestHeader("Content-type", "application/octet-stream");
postMethod.setRequestHeader("clientGuid", "06d8f57f-2c3e-4225-98f8-b1f02ff08a77");
postMethod.setRequestHeader("value", "128");
postMethod.setRequestHeader("FileName", "MediaID.bin");


int statusCode1 = client.executeMethod(postMethod);

System.out.println("statusLine>>>" + postMethod.getStatusLine());
postMethod.releaseConnection();
}
}
В ответ я получаю statusCode1 = 400 (BadRequest). Что я делаю не так?
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
26.06.2011, 12:10 13
если вы хотите добавлять параметры, дык их и добавляйте, по типу:<!--shcode--><pre><code class=java>postMethod.addParameter(new NameValuePair("paramName", paramValue));[/CODE]а вы их в хидер пихаете

Добавлено: и воще сморите юзаджи
0
0 / 0 / 0
Регистрация: 12.07.2009
Сообщений: 29
26.06.2011, 12:50 14
У меня есть код на C#, который делает то, что мне надо. Там все это в Header пишется

Еще один вопрос: "Как просмотреть текст http-запроса"?


Код
 request.ContentType = "application/octet-stream";
request.Method = "POST";
request.Headers["clientGuid"] = ClientId.ToString();
request.Headers["value"] =
operationId.Value.ToString();
request.Headers["FileName"] =
Convert.ToBase64String(Encoding.UTF8.GetBytes(filename));
Вот я и пишу по аналогии.
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
26.06.2011, 13:50 15
Цитата Сообщение от shershun4ik
Еще один вопрос: "Как просмотреть текст http-запроса"?
для клиентской части - для javascript есть, для серверной - на соответствующем сервере
вы, так понимаю, обращаетеськ внешнему серваку (не встроенным/интегрированным в NetBeans)...
ставьте снифер (любой), кот. http мониторит...
я wireshark люблю ;) (он мониторит "всё", можно задать нужные фильтры, я так отслеживал заголовки, уходящие на торенттреккер)
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
26.06.2011, 14:18 16
есть писанная на java и именно для http https
https://www.owasp.org/index.php/Category:OW...bScarab_Project
ставите его проксём (в коде придётся делать соединение через прокси 127.0.0.1:8008)
и мониторите
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
26.06.2011, 14:28 17
через проксю
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
26.06.2011, 15:03 18
мобуть вам типа того надо
0
26.06.2011, 15:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.06.2011, 15:03
Помогаю со студенческими работами здесь

Как реализовать передачу функции ключа или не передачу
Есть функция: bool LoadExclusion() { std::string filename = &quot;Exclusion&quot;; std::ifstream...

Выполнение запроса и построитель выражений. Поля появляются, а значения не вытягивает в поля запроса
Запрос НАРАХОВАНО Поля для значений появляются, а значения не вытягивает в поля запроса, нужное не...

Выполнить передачу файла на ftp в потоке
Всем привет.Подскажите плз. Не разберусь с потоками... пытаюсь выполнить передачу файла на ftp в...

Осуществить передачу файла от клиента к серверу
Добрый вечер, тема не новая, но после прочтения кучи форумов в голове настоящая каша. Необходимо...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru