[JAVA] Libreria HTTP
[JAVA] Libreria HTTP
Salve,
qualcuno conosce una libreria, possibilmente open&free, che implementi le chiamate get/post di HTTP in java e supporti anche l'utilizzo dei cookies senza ulteriori modifiche?
Aspetto ansioso...
ciauz
qualcuno conosce una libreria, possibilmente open&free, che implementi le chiamate get/post di HTTP in java e supporti anche l'utilizzo dei cookies senza ulteriori modifiche?
Aspetto ansioso...
ciauz
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
- daemon_nio
- Entusiasta Emergente

- Messaggi: 1012
- Iscrizione: lunedì 15 gennaio 2007, 14:18
- Sesso: Maschile
- Località: London
- Contatti:
Re: [JAVA] Libreria HTTP
cosa devi fare esattamente?
io per un mio progettino ho usato queste classe:
fanno parte del core J2EE e ti consentono addirittura di creare un serverino stile apache tomcat.
Io l'ho utilizzato per creare un'applicazione stile REST, quindi elaborare richieste HTTP e processarle stile servlet implementando i metodi doGet, doPost, doHead, doDelete e doPut.
Ma credo che se ti guardi un po' le sintassi le stesse classi possono essere utilizzate anche per creare dei piccoli client.
Per i cookie sempre nel core J2EE dovresti trovare la classe:
io per un mio progettino ho usato queste classe:
Codice: Seleziona tutto
import javax.annotation.Resource;
import javax.xml.transform.Source;
import javax.xml.ws.Endpoint;
import javax.xml.ws.Provider;
import javax.xml.ws.ServiceMode;
import javax.xml.ws.WebServiceContext;
import javax.xml.ws.WebServiceProvider;
import javax.xml.ws.handler.MessageContext;
import javax.xml.ws.http.HTTPBinding;Io l'ho utilizzato per creare un'applicazione stile REST, quindi elaborare richieste HTTP e processarle stile servlet implementando i metodi doGet, doPost, doHead, doDelete e doPut.
Ma credo che se ti guardi un po' le sintassi le stesse classi possono essere utilizzate anche per creare dei piccoli client.
Per i cookie sempre nel core J2EE dovresti trovare la classe:
Codice: Seleziona tutto
import javax.servlet.http.Cookie;Sempre costruendo qualcosa di nuovo: Matag: The Game
Re: [JAVA] Libreria HTTP
Grazie per l'info ma cercavo qualcosa di già fatto...daemon_nio ha scritto: cosa devi fare esattamente?
io per un mio progettino ho usato queste classe:fanno parte del core J2EE e ti consentono addirittura di creare un serverino stile apache tomcat.Codice: Seleziona tutto
import javax.annotation.Resource; import javax.xml.transform.Source; import javax.xml.ws.Endpoint; import javax.xml.ws.Provider; import javax.xml.ws.ServiceMode; import javax.xml.ws.WebServiceContext; import javax.xml.ws.WebServiceProvider; import javax.xml.ws.handler.MessageContext; import javax.xml.ws.http.HTTPBinding;
Io l'ho utilizzato per creare un'applicazione stile REST, quindi elaborare richieste HTTP e processarle stile servlet implementando i metodi doGet, doPost, doHead, doDelete e doPut.
Ma credo che se ti guardi un po' le sintassi le stesse classi possono essere utilizzate anche per creare dei piccoli client.
Per i cookie sempre nel core J2EE dovresti trovare la classe:Codice: Seleziona tutto
import javax.servlet.http.Cookie;
Tipo un oggetto su cui devo semplicemente chiamare get() e post() e nient'altro... Tenendomi così "all'oscuro" di cookies e quant'altro...
ciauz
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
- IppatsuMan
- Prode Principiante
- Messaggi: 199
- Iscrizione: mercoledì 14 febbraio 2007, 1:31
- Contatti:
Re: [JAVA] Libreria HTTP
http://hc.apache.org/. Se ti interessa in particolare il client side guarda http://hc.apache.org/httpcomponents-client/index.html.
ハッカー
Re: [JAVA] Libreria HTTP
Molto interessante... Hai mica per caso degli esempi sull'utilizzo dei cookies?IppatsuMan ha scritto: http://hc.apache.org/. Se ti interessa in particolare il client side guarda http://hc.apache.org/httpcomponents-client/index.html.
O addirittura qualcuno che ha creato un HTTPClient che emuli firefox o un altro browser?
ciauz
Ultima modifica di Zoff il domenica 14 settembre 2008, 13:32, modificato 1 volta in totale.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
- Massimo S.
- Entusiasta Emergente

- Messaggi: 1931
- Iscrizione: giovedì 28 settembre 2006, 14:34
Re: [JAVA] Libreria HTTP
Io pure ho sempre usato HttpComponents di Apache, o meglio io ho usato la versione vecchia commons-http-client 2.x
Però non ho dovuto mai avere a che fare con la gestione dei cookies.
Zoff che intendi per emulare Firefox o altro browser?
HttpComponents rispetta le RFC sul protocollo HTTP ed è in grado di gestire (lato client) tutti i vari metodi http: get, post, ecc.. e supporta tutto quello che prevede il protocollo http 1.1
Se intendi che si deve fingere Firefox, credo che non lo faccia, nell'header delle richieste http la libreria dichiara di essere quella che è, Apache HttpComponents, non so se c'è un modo per far si che dica di essere Firefox o altro browser.
Inoltre HttpComponents gestisce solo la parte di "comunicazione" di un browser, ovvero le richieste/risposte http, ma non è in grado di fare cose come "renderizzare" le pagine html o far girare javascript
Però non ho dovuto mai avere a che fare con la gestione dei cookies.
Zoff che intendi per emulare Firefox o altro browser?
HttpComponents rispetta le RFC sul protocollo HTTP ed è in grado di gestire (lato client) tutti i vari metodi http: get, post, ecc.. e supporta tutto quello che prevede il protocollo http 1.1
Se intendi che si deve fingere Firefox, credo che non lo faccia, nell'header delle richieste http la libreria dichiara di essere quella che è, Apache HttpComponents, non so se c'è un modo per far si che dica di essere Firefox o altro browser.
Inoltre HttpComponents gestisce solo la parte di "comunicazione" di un browser, ovvero le richieste/risposte http, ma non è in grado di fare cose come "renderizzare" le pagine html o far girare javascript
Ultima modifica di Massimo S. il domenica 14 settembre 2008, 15:39, modificato 1 volta in totale.
Re: [JAVA] Libreria HTTP
Si si non intendevo assolutamente renderizzare le pagine...Massimo S. ha scritto: Io pure ho sempre usato HttpComponents di Apache, o meglio io ho usato la versione vecchia commons-http-client 2.x
Però non ho dovuto mai avere a che fare con la gestione dei cookies.
Zoff che intendi per emulare Firefox o altro browser?
HttpComponents rispetta le RFC sul protocollo HTTP ed è in grado di gestire (lato client) tutti i vari metodi http: get, post, ecc.. e supporta tutto quello che prevede il protocollo http 1.1
Se intendi che si deve fingere Firefox, credo che non lo faccia, nell'header delle richieste http la libreria dichiara di essere quella che è, Apache HttpComponents, non so se c'è un modo per far si che dica di essere Firefox o altro browser.
Inoltre HttpComponents gestisce solo la parte di "comunicazione" di un browser, ovvero le richieste/risposte http, ma non è in grado di fare cose come "renderizzare" le pagine html o far girare javascript
Il mio interesse all'emulazione di Firefox/IE/Opera/Chrome/etc riguardava proprio come si presenta la libreria ai server...
Ho notato tra i parametri di connessione (come è ovvio) UserAgent ed in particolare il metodo HttpProtocalParams.setUserAgent(params,"stringa userAgent") che però negli esempi che ho trovato setta a: "HttpComponents/1.1"
Magari di li si combina qualcosa...
Il problema principale però è che ho provato questo esempio:
Codice: Seleziona tutto
/*
* $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/tags/4.0-beta2/module-main/src/examples/org/apache/http/examples/ElementalHttpGet.java $
* $Revision: 610464 $
* $Date: 2008-01-09 18:10:55 +0100 (Wed, 09 Jan 2008) $
*
* ====================================================================
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.http.examples;
import java.net.Socket;
import org.apache.http.ConnectionReuseStrategy;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.HttpVersion;
import org.apache.http.impl.DefaultConnectionReuseStrategy;
import org.apache.http.impl.DefaultHttpClientConnection;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.message.BasicHttpRequest;
import org.apache.http.params.HttpParams;
import org.apache.http.params.HttpProtocolParams;
import org.apache.http.protocol.BasicHttpProcessor;
import org.apache.http.protocol.HttpContext;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.ExecutionContext;
import org.apache.http.protocol.HttpRequestExecutor;
import org.apache.http.protocol.RequestConnControl;
import org.apache.http.protocol.RequestContent;
import org.apache.http.protocol.RequestExpectContinue;
import org.apache.http.protocol.RequestTargetHost;
import org.apache.http.protocol.RequestUserAgent;
import org.apache.http.util.EntityUtils;
/**
* Elemental example for executing a GET request.
*
* @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
*
*
* <!-- empty lines above to avoid 'svn diff' context problems -->
* @version $Revision: 610464 $
*/
public class ElementalHttpGet {
public static void main(String[] args) throws Exception {
HttpParams params = new BasicHttpParams();
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, "UTF-8");
HttpProtocolParams.setUserAgent(params, "HttpComponents/1.1");
HttpProtocolParams.setUseExpectContinue(params, true);
BasicHttpProcessor httpproc = new BasicHttpProcessor();
// Required protocol interceptors
httpproc.addInterceptor(new RequestContent());
httpproc.addInterceptor(new RequestTargetHost());
// Recommended protocol interceptors
httpproc.addInterceptor(new RequestConnControl());
httpproc.addInterceptor(new RequestUserAgent());
httpproc.addInterceptor(new RequestExpectContinue());
HttpRequestExecutor httpexecutor = new HttpRequestExecutor();
HttpContext context = new BasicHttpContext(null);
HttpHost host = new HttpHost("localhost", 8080);
DefaultHttpClientConnection conn = new DefaultHttpClientConnection();
ConnectionReuseStrategy connStrategy = new DefaultConnectionReuseStrategy();
context.setAttribute(ExecutionContext.HTTP_CONNECTION, conn);
context.setAttribute(ExecutionContext.HTTP_TARGET_HOST, host);
try {
String[] targets = {
"/",
"/"};
for (int i = 0; i < targets.length; i++) {
if (!conn.isOpen()) {
Socket socket = new Socket(host.getHostName(), host.getPort());
conn.bind(socket, params);
}
BasicHttpRequest request = new BasicHttpRequest("GET", targets[i]);
System.out.println(">> Request URI: " + request.getRequestLine().getUri());
context.setAttribute(ExecutionContext.HTTP_REQUEST, request);
request.setParams(params);
httpexecutor.preProcess(request, httpproc, context);
HttpResponse response = httpexecutor.execute(request, conn, context);
httpexecutor.postProcess(response, httpproc, context);
System.out.println("<< Response: " + response.getStatusLine());
System.out.println(EntityUtils.toString(response.getEntity()));
System.out.println("==============");
if (!connStrategy.keepAlive(response, context)) {
conn.close();
} else {
System.out.println("Connection kept alive...");
}
}
} finally {
conn.close();
}
}
}Codice: Seleziona tutto
<?php
session_start();
if($_SESSION['test']==""){
$_SESSION['test'] = "funziona!";
}else{
echo "test vale: ".$_SESSION['test'];
}
?>Allora ho provato quest'altro esempio trovato sul sito.
E adesso funziona...
Comincio a studiarmi bene come usarlo...
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
- Massimo S.
- Entusiasta Emergente

- Messaggi: 1931
- Iscrizione: giovedì 28 settembre 2006, 14:34
Re: [JAVA] Libreria HTTP
Come dicevo nell'altro post io ho usato la vecchia versione common-http-client 2.x
Vedendo gli esempi che hai postato, devo dire che la libreria mi sembra molto cambiata, comunque il codice del secondo esempio (quello di cui hai postato solo il link e per cui ti funziona le gestione dei cookies) mi sembra più simile al codice che usavo per richiamare la vecchia libreria.
Forse il primo esempio è qualcosa che va più a "basso livello" di quanto effettivamente ti serva
Vedendo gli esempi che hai postato, devo dire che la libreria mi sembra molto cambiata, comunque il codice del secondo esempio (quello di cui hai postato solo il link e per cui ti funziona le gestione dei cookies) mi sembra più simile al codice che usavo per richiamare la vecchia libreria.
Forse il primo esempio è qualcosa che va più a "basso livello" di quanto effettivamente ti serva
Chi c’è in linea
Visualizzano questa sezione: Bing [Bot] e 7 ospiti
