HTTP POST obsahu souborů v JAVA
Ve scénáři webu máme dvě metodu pro odeslání obsahu na jiné stránky "GET" a "POST". I když v "GET" metoda vývojáři těší pružnost kontroly obsahu dostat prošel, ale tam je limit pro odesílání dat. Jak v porovnání s "GET" method "POST" má neomezenou flexibilitu pro odesílání dat a pomocí této metody můžeme také posílat obrovské obsahu souborů. Tento článek vás naučí, jak můžeme poslat obrovské obsahu souborů se vzdáleným hostitelem. Pro dosažení tohoto cíle budeme používat URLConnection třída, která vám umožní připojit se vzdáleným URL stránky.
JSP kódu stránky
= "java.util.*,java.net.URL,java.net.URLConnection,java.net.URLEncoder,java.io.*" %> <% @ Page import = "java.util .*, java.net.MalformedURLException, java.net.URLConnection, java.net.URLEncoder, java.io. *"%> <% URL url; URLConnection urlConn; DataOutputStream výtisk; DataInputStream vstup; / / URL vzdálené Script. URL ( "http://localhost:8080/testpostdata" ) ; //testpostdata is the servlet name url = new URL ( "http://localhost:8080/testpostdata"); / / testpostdata je servlet jméno / / Open Nové spojení URL kanálu. ( ) ; urlConn = url. openConnection (); / / Let run-time systém (RTS), vím, že chceme vstup. true ) ; urlConn. setDoInput (true); / / Chceme udělat výstup. true ) ; urlConn. setDoOutput (true); / / Nechceme caching false ) ; urlConn. setUseCaches (false); / / Nastaví záhlaví typu obsahu. "Content-Type" , "application/x-www-form-urlencoded" ) ; urlConn. setRequestProperty ( "Content-Type", "application / x-www-form-urlencoded"); / / Send POST výstup. DataOutputStream ( urlConn. getOutputStream ( ) ) ; tisk = new DataOutputStream (urlConn. getOutputStream ()); String content = URLEncoder . encode ( "Hitesh Agrawal" ) + "name =" + URLEncoder. encode ( "Hitesh Agrawal") + URLEncoder . encode ( "Software Engineer" ) ; "& profese =" + URLEncoder. encode ( "Software Engineer"); content ) ; tisk. writeBytes (obsah); ; tisk. flush (); ; tisk. close (); / / Get data odezvy. DataInputStream ( urlConn. getInputStream ( ) ) ; vstup = new DataInputStream (urlConn. getInputStream ()); String str; null != ( ( str = input. readLine ( ) ) ) ) while (null! = ((str = vstup. ctiRadek ()))) ( . println ( str ) ; Systému. Ven. System.out.println (str); ) ; vstup. close (); %>
Vysvětlivky k JSP kód:
- Zde jsme se vytvořit objekt URLConnection voláním openConnection () metoda objektu URL
- Po vytvoření objektu nastavíme potřebné atributy a záhlaví potřebné pro odesílání dat
- Po nastavení záhlaví píšu údaje o OutputStream. Nakonec jsem četl reakce dat.
testpostdata Servlet kód
; import java.io. *; ; import javax.servlet .*; ; javax.servlet.http .*; HttpServlet { public class testování rozšiřuje HttpServlet ( init ( ServletConfig config ) throws ServletException { public void init (ServletConfig config) throws ServletException ( ( config ) ; super. init (config); ) destroy ( ) { public void destroy () ( ) doPost ( HttpServletRequest request,HttpServletResponse response ) throws IOException , ServletException { public void doPost (HttpServletRequest request, HttpServletResponse odpověď) throws IOException, ServletException ( request. getParameter ( "name" ) ; String name = žádost. GetParameter ( "name"); request. getParameter ( "profession" ) ; String povolání = žádost. GetParameter ( "profese"); OutputStream f0; = name. getBytes ( ) ; byte buf [] = jméno. getBytes (); FileOutputStream ( "/home/hitesh/Desktop/postcontent.txt" ) ; f0 = new FileOutputStream ( "/ home / Hitesh / Desktop / postcontent.txt"); int i = 0 ; i < buf . length ; i ++ ) { for (int i = 0; i <buf. délku, i + +) ( buf [ i ] ) ; f0. write (buf [i]); ) ; f0. close (); ; buf = null; ) )
Vysvětlivky k Servlet kód:
- V doPost () i am načítání parametru zaslat pomocí request.getParameter
- Chcete-li crosscheck, zda údaje byly úspěšně poslat jsem vytvořit soubor a obsahu souboru jsou data přijatá přes POST

Vlastní vyhledávání
















Jak mohu přenos souborů pomocí této metody (například obrázek (jpeg)). Snažil jsem se, ale jen 9-10 bytů se přenesou.