0 / 0 / 0
Регистрация: 12.07.2009
Сообщений: 29
|
|
1 | |
Выполнение Http-запроса на передачу файла20.06.2011, 15:14. Показов 35138. Ответов 17
Метки нет (Все метки)
Задача такая: "надо передать файл на web-сервер". Метод http-запроса должен быть "POST".
Вопросы: 1. Как выполнить http-запрос из агента на Lotus Script? 2. Как вставить бинарный файл в http-запрос?
0
|
20.06.2011, 15:14 | |
Ответы с готовыми решениями:
17
Синхронное выполнение HTTP-запроса Http POST отправка файла в теле запроса Повторное выполнение пакетного файла без запроса на завершение Выполнение http.request http.get |
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
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
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
ПС: Выложи 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
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(); } }
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
вы, так понимаю, обращаетеськ внешнему серваку (не встроенным/интегрированным в 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 | |
26.06.2011, 15:03 | |
Помогаю со студенческими работами здесь
18
Как реализовать передачу функции ключа или не передачу Выполнение запроса и построитель выражений. Поля появляются, а значения не вытягивает в поля запроса Выполнить передачу файла на ftp в потоке Осуществить передачу файла от клиента к серверу Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |