hátha valakinek pont ez kell:
http://hc.apache.org/httpclient-3.x/
httpclient-el szívtam tegnap/tegnapelőtt elég sokat, egy weboldalt szerettem volna HTTP POST request-el megpörgetni, hogy a nekem kellő keresési eredményeket tartalmazó html-t kapjam vissza (ami helyett rendre a kérdést tartalmazó formot kaptam vissza)
linuxon egy justniffer nevű programot használva sikerült elfognom hogy mégis mit küld ki a chrome:
------WebKitFormBoundarykVBIq0AoQKgnGL1F
Content-Disposition: form-data; name="htmlbScrollX"
0
az én java programom ehez még hozzárakta kb így (fejből írom lehet hogy nem pontos):
------WebKitFormBoundarykVBIq0AoQKgnGL1F
Content-Disposition: form-data; name="htmlbScrollX"; Content-Type:"text/plain";
Transfer-Encoding:"US-ASCII"
0
gyanús lett hogy ez a nem jó, miután az összes paramétert ami a html formon szerepelt imitálom jávából is
végül is azon bukott el a dolog, hogy a httpclient default content type-ja plain/text, a transfer encoding-ja meg US-ASCII
http://hc.apache.org/httpclient-3.x/apidocs/org/apache/commons/httpclient/methods/multipart/StringPart.html
a default-ok az osztály elején vannak felsorolva, és a megadása nélkül ezeket használja
lejjebb olvasva kiderült, hogy: setCharset() illetve a másik két értékre is létezik setXX függvény, és ezek fogadnak null-t, amikor nem ír a request part-ba Content-Type-ot, és Transfer encoding-ot sem
a setCharset() viszont nem a multipart requestbe ír paramétert, hanem magához a kódoláshoz használja fel, így az nem lehet null, ha null marad akkor NullPointerException-el elszáll a request meghívása (még a kliens oldalon)
és ezzel végül is működik