| | |
| Stránka: 1 z 1
| [ Príspevkov: 3 ] | |
Autor | Správa |
---|
Registrovaný: 05.01.09 Prihlásený: 04.04.16 Príspevky: 13 Témy: 5 Bydlisko: Košice |
Posnazim sa to vysvetlit:
Metoda1 [Object], ktora podla parametra ktorym je link stranky, stiahne cely zdrojovy kod stranky do buffru, vyselektuje nejake hodnoty a vrati ich.
Metoda2 [void], ktora prepisuje neaktualne hodnoty v ArrayListe na najnovsie hodnoty z netu (ktore dostane z Metody1). Kedze linky sa nachadzaju v ArrayListe (ktore potrebuje Metoda1 ako parameter), vyuziva sa foreach cyklus.
Ide o to, ze ak spustim program, nejake hodnoty sa vyselektovat podari, no potom nastane ten dany citovany problem. Vacsinou (takych 70% pripadov) sa uspesne podari spracovat prve 3 linky (3/7) z ArrayListu. Niekedy 4, niekedy 6 a RAZ sa mi podarilo vsetky. Neviem kde je problem...skusal som DEBUG a krok po kroku som to presiel, logicku chybu som nenasiel a v debugy presiel cely program so 100% uspesnostou...Najvacsi bonus na tom vsetkom je neziaduci vypadok internetu sposobeny mojou aplikaciou Myslel som si, ze je to sposobene rychlostou ciklu for ktory mohol sposobovat nedaj boze DDOS utok. Preto som vlozil do cyklu kod: "Thread.sleep(10000);" vysledok bol taky, ze na spracovanie 3. linku som cakal 30 sekund a 4. link nespracovalo..ten isty prob. Par krat sa mi podarilo spracovat 5 alebo 6 linkov stale inak...no vacsinou 3, niekedy 1 niekedy vobec ziaden...
Metoda1[kod]:
Kód: public Object[] getSite(String link) {
Object[] nameAndPrice = {null, null};
URL url = null; URLConnection urlConn = null; InputStreamReader inStream = null; BufferedReader buffer = null; String nextLine;
try { url = new URL(link); urlConn = url.openConnection(); inStream = new InputStreamReader( urlConn.getInputStream()); buffer = new BufferedReader(inStream);
while (true) { nextLine = buffer.readLine(); . . SELEKTOVANIE STRANKY (tu chyba nie je, cyklus bude brake-nuty) . . } nameAndPrice[0] = finalName; nameAndPrice[1] = finalPriceWithoutTax; return nameAndPrice; } catch (MalformedURLException e) { e.printStackTrace(); return null; } catch (IOException e) { e.printStackTrace(); return null; } }
Metoda2[kod]:premennda products bola deklarovana takto: List<Product> products = new ArrayList<Products>();Kód: public void valueUpdate() { for (Product product : products) { Object[] o = getSite(product.getLink()); System.out.println(o[0].toString() + " " + o[1].toString()); product.setName((String) o[0]); product.setPriceWithoutTax((Double) o[1]); } }
Chybovy vypis:
Citácia: java.net.ConnectException: Connection timed out: connect at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333) at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) at java.net.Socket.connect(Socket.java:519) at java.net.Socket.connect(Socket.java:469) at sun.net.NetworkClient.doConnect(NetworkClient.java:163) at sun.net.www.http.HttpClient.openServer(HttpClient.java:394) at sun.net.www.http.HttpClient.openServer(HttpClient.java:529) at sun.net.www.http.HttpClient.<init>(HttpClient.java:233) at sun.net.www.http.HttpClient.New(HttpClient.java:306) at sun.net.www.http.HttpClient.New(HttpClient.java:323) at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:837) at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:778) at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:703) at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1026) at pricelist.MainFrame.getSite(MainFrame.java:340) at pricelist.Main.main(Main.java:14) Exception in thread "main" java.lang.NullPointerException at pricelist.Main.main(Main.java:15) Java Result: 1
Cely den nad tym sedim, no neviem prist na to, co to moze sposobovat...
ma niekto nejake rady? budem velmi vdacny...(topiaci sa aj slamky chyta)
_________________ La morte non viene mai da sola.
"Death never comes alone" |
|
Registrovaný: 05.01.09 Prihlásený: 04.04.16 Príspevky: 13 Témy: 5 Bydlisko: Košice | Napísal autor témy Lukasito: 21.07.2009 22:06 | |
|
OMFG! do metody1 som zabudol pridat Kód: buffer.close(); preto to neslo, jeziiiiiiis hlavne ze 2 dni nad tym sedim..
aj tak celkom tomu nerozumiem preco prave taka vec mohla robit hluposti...kedze som vytvaral novy buffer, preco ten predtym trebalo zavriet? Myslel som ze garbage collector to poriesi...Vie mi to niekto vysvetlit co sa to tam deje?
_________________ La morte non viene mai da sola.
"Death never comes alone" |
|
Registrovaný: 02.11.07 Prihlásený: 18.03.15 Príspevky: 470 Témy: 22 Bydlisko: Zilinska Un... |
Kukal som tvoj zdrojak, . Mozem ti ukazat jednu funkciu z mojej komunikacie, mam tam viac kontrol a funguje spravne, je to len testovacia funkcia ese neuplna, ale funguje spravne ...
Stiahne zdrojak sranky a vypise ho do konzoli.
Kód: private void HttpConnection(String httpUrl) {
try {
_httpUrl = httpUrl; Connection connectionHttp;
// 1. Open connection to internal tag boolean newApplication = false;
if ((connectionHttp = Connector.open(_httpUrl)) instanceof HttpConnection) {
conn = (HttpConnection) connectionHttp;
form.append("pripajanie ... \n"); System.out.println("\n**pripajanie na hTTP URL: \n" + _httpUrl + ".\n"); System.out.println("**pripajanie na hTTP conn: \n" + conn + ".\n"); // form.append("\n httpUrl OK \n");
// conn.setRequestMethod(HttpConnection.GET); // conn.setRequestProperty("Connection", "close");
// ****************************************************************2end
// InputStream inputStream;
// InputStream in = conn.openInputStream();
if (conn == null) { conn = null;
System.out.println("\n**internalUrl NULL \n"); form.append("\n**internalUrl NULL \n");
} if ((conn.getResponseCode() == HttpConnection.HTTP_OK)) { int length = (int) conn.getLength(); // inputstream
_inputStream = conn.openInputStream(); form.append("\n**HTTP_OK \n");
if (length == -1) { // unknown length returned by server. // It is more efficient to read the data in chunks, so // we // will be reading in chunk of 1500 = Maximum MTU // possible
System.out .println("Data Read from Server OK !!!!!!!!!!!!!!!! \n "); form.append("\n**lenght -1 \n");
int chunkSize = 1500; byte[] data = new byte[chunkSize]; ByteArrayOutputStream baos = new ByteArrayOutputStream();
int dataSizeRead = 0;// size of data read from input // stream.
while ((dataSizeRead = _inputStream.read(data)) != -1) { // it is not recommended to write to string in the // loop as it causes heap defragmentation and it is // inefficient, therefore we use the // ByteArrayOutputStream. baos.write(data, 0, dataSizeRead); System.out.println("Data Size Read = " + dataSizeRead); }
dataRead = new String(baos.toByteArray()); baos.close();
} else { form.append("\n**lenght not -1 \n"); System.out .println("Data Read from Server not correct !!!!!!!!!!!!!!!! \n "); _dataInputStream = new DataInputStream(_inputStream); byte[] data = new byte[length]; // try to read all the bytes returned from the server. _dataInputStream.readFully(data); dataRead = new String(data);
} form.append("\n Data Read from server--\n \n"); form.append(dataRead); System.out.println("Data Read from server--\n" + dataRead + "\n");
} } else {
System.out.println("httpUrl null \n"); form.append("httpUrl NULL \n"); }
} catch (IOException e) { form.append("IOException: " + e); System.out.println("\n**Caught IOException: " + e + "\n"); e.printStackTrace(); } // Since only limited number of network objects can be in open state // it is necessary to clean them up as soon as we are done with them. finally {// Networking done. Clean up the network objects try { if (_inputStream != null) _inputStream.close(); } catch (Throwable t) { System.out.println("Exception occurred while closing input " + "stream."); } try { if (conn != null) conn.close(); } catch (Throwable t) { System.out.println("Exception occurred " + t.toString()); } }
}
_________________ Notebook: HP EliteBook 8740w
You can see my work in my www |
|
| Stránka: 1 z 1
| [ Príspevkov: 3 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| Hrúbka <frame> a <rules> v <table> v HTML, XHTML, XML, CSS | 7 | 664 | 25.01.2009 22:10 Ďuri | | formular: presun <option> zo <select> do <select> v JavaScript, VBScript, Ajax | 2 | 747 | 28.09.2009 15:27 tomast7 | | Nazdielanie netu, LAN<-->PC<--wifi-->Notebook v Siete | 1 | 1082 | 15.04.2006 23:44 Spirit | | <tr> riadok tabulky ako odkaz <a> v HTML, XHTML, XML, CSS | 3 | 568 | 15.03.2010 15:32 1daemon1 | | Interpunkcia v elementoch <textarea> a <select> v HTML, XHTML, XML, CSS | 4 | 456 | 30.10.2016 12:01 alvar | | HTML, CSS - skombinovat <DIV> a <p> v HTML, XHTML, XML, CSS | 2 | 584 | 28.04.2016 18:08 doubleR | | Chladiče procesorov >>Všetky problémy sem<< v Chladiče a všetky druhy chladenia | 3 | 486 | 30.01.2013 22:08 DropaDred | | >>>Schvalenie zostavy<<< v PC zostavy | 10 | 653 | 16.12.2010 21:55 abcdefgh | | tagy <em> a <strong> v Internetový marketing, SEO, reklama | 24 | 1400 | 01.12.2009 0:27 shaggy | | <a href> around <div> v HTML, XHTML, XML, CSS | 9 | 958 | 17.01.2007 22:43 exot | | <ul> <li> nemam odrazky v HTML, XHTML, XML, CSS | 1 | 560 | 09.04.2010 18:26 stenley | | Nacitanie udajov z databazy do <input> a <textarea& v PHP, ASP | 5 | 694 | 03.11.2007 21:46 Matho | | <p><hr></p> v HTML, XHTML, XML, CSS | 6 | 582 | 08.07.2010 21:41 camo | | načo slúžia tagy <div id="all"> a <div v HTML, XHTML, XML, CSS | 3 | 1003 | 06.10.2008 17:50 neutronmind | | Problem s vnorenim <ul> v HTML, XHTML, XML, CSS | 3 | 950 | 17.07.2006 18:20 Pufo Callo | | Problem s <hr /> v IE v HTML, XHTML, XML, CSS | 5 | 518 | 28.08.2007 9:47 imnotwhafo |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|