Hello, You can also simple get all the request headers using the -v flag when running curl. Or you could use wireshark, which (at least to me) seems easier than using tcpdump.
I'd like to reproduce your problem, but I seem to be too stupid to get the Tika server up and running. When running java -jar tika-app-1.4.jar -s 9999 (or even with the verbose flag) I simply don't get any thing (but a running process) and the server seems to me not properly started, e.g. if I do curl -X GET http://localhost:9998/tika I simply get nothing (I don't get any response, servers seems not to send any response). However, I would suggest to try to look at the request sent by curl, as curl sets some headers automatically and I also experienced similar problems before (i.e. for some servers not setting some obscure headers seems to be fatal...) Cheers, Dirk On 05/01/14 15:00, Florent Georges wrote: > On 5 January 2014 00:57, Andy Bunce wrote: > > Hi, > >> curl -X PUT -T aa.pdf http://localhost:9998/tika >> [...] >> I have tried: >> let $file:="C:\tmp\aa.pdf" >> let $request := >> <http:request method='PUT' > >> <http:body media-type="application/octet-stream">{ >> fetch:binary($file) >> }</http:body> >> </http:request> > > I do not know Tika, I do not have BaseX on this machine, and you did > not give a lot of details about what is not working nor error messages, > so it is a bit difficult to help here. All I can say is that I would > use the following as the EXPath HTTP Client equivalent to the above > CURL command: > > <http:request method="put"> > <http:body media-type="application/pdf" src="file:/c:/tmp/aa.pdf"/> > </http:request> > > The @media-type is mandatory. You do not set any explicitly with > CURL, so you should probably find which MIME type works with CURL in > the first place. The @src lets the processor handle the details of > accessing the binary file, which makes things easier and then you are > sure the problem is not with fetch:binary() or with the analysis of > the binary content of http:body. > > If you find a MIME type that works with CURL (you can use the -H > option like the following: -H "Content-Type: application/pdf"), and it > is still failing, tcpdump can help as well. Open a terminal window, > and execute the following: > > sudo tcpdump -s 0 -A -i any tcp and host localhost and port 9998 > > This will dump all traffic to localhost:9998. Then go to another > terminal window (because tcpdump is still running) and execute the > CURL command. After the completion, go back to the first window and > press Ctrl-C (to kill tcpdump). In between, tcpdump has output to the > console a dump of the request. It will as well if you keep it running > when you test your query in BaseX. So you can compare both requests > and see what is different (or post it here so we can see what is > happening). > > Regards, > -- Dirk Kirsten, BaseX GmbH, http://basex.org |-- Firmensitz: Blarerstrasse 56, 78462 Konstanz |-- Registergericht Freiburg, HRB: 708285, Geschäftsführer: | Dr. Christian Grün, Dr. Alexander Holupirek, Michael Seiferle `-- Phone: 0049 7531 28 28 676, Fax: 0049 7531 20 05 22 _______________________________________________ BaseX-Talk mailing list BaseX-Talk@mailman.uni-konstanz.de https://mailman.uni-konstanz.de/mailman/listinfo/basex-talk