Hi guys, recently I have been developing a small to medium sized application which logs into a database website that contains text files from various sorces (e.g. The Wall Street Journal), searches for articles meeting a certain criteria, and then downloads the text of all the articles which the search yields. Since discovering HttpClient the project has been going very well, and I have now got to the stage where I have logged in, searched for the articles, and I am facing a large list of all the articles meeting the search criteria. Unfortunately I am having problems on the final POST which results in the server returning the article page. The POST method is returning a status code 200, but instead of returning the article it is returning a small page saying “We are unable to process your request at this time. Please try again in a few minutes”.

I have been using HTTP Analyzer to monitor exactly what data is sent to the HTTP server from a) iexplorer, and b) my program. Both programs matched on all header fields, but they were both posting different data to the server. Below I have shown the data that is being posted by both applications:

Iexplorer:

_XFORMSESSSTATE=ABR7MDp7VToiL2hhL2RlZmF1bHQuYXNweCIsMDp7MjoibWJtMCIsM6IBLTB4Ag0iUyIsMToiZW4iLDY6MCw3nAQFd2Fyd2ljazFtBTBsBwI4OjAsOXgDkAB2ATM6YAMDMCw3NTowxAcDMCw0OjAsfAEONzA6Miw3MzoxLDcyOjIsNDFsBAc4OjIsNjk6MSw2egQ2NXkBNngBjA4LMSwwOjI1LDE6MX0sNjB8BZAGeQw1cQ41cg41N2AMfRQ1eQw1YQk1iQQyYANlBjVtBzRxBTR5BjRxBTR5BjRxBTR5BjRxBTR5BjRxBTN9BDNlBjNhCDOMAmwXAzMyOjEsM2UGM20HM3UIM30JMnEFMnkGMnEFMnkGMnEKMnEKMmUGMn0EOXkBOWEDOWkEOXEFN2oJNzdoI3AfAjcxOjEscgMxOGABZQQxfQwxfQcxZQk4fQc4ZQk4dQM4YQY4dQM4fQQ4eQk4nARwEgg4OTowfSwxOnsxMGoEMTBmAzEwkARcC3UvN58WOjAsaQowfBBsBHQFcBJkBX0BN2wN5DgBMSwxMWUFNG0PNmAVKx8HMSw2eQc2fBEp6AZ1JzZxDDlsBzUQBwUxLDU0OjEsNX0tNWUGNXAhkjgxMHkVOHACKz4HMSz%2bOTEs/zkxLDRkCC0%2bBzEweg8xMGYoMTBiCzEwfhoxMGgVK7QHWCF0BD%2b3BzEsMnAg9z0xLDJ4F%2bs%2bMSwyZQs5bBaJPjdxMjmMAmokOTV8LW0sN20CN20CN30SOXwEYQExdTMxlAFhGjFlCTFlDjGAF3QG60MxLDFtDzh9BDhoLOpDMSzrQzEsOGUOOGk2OHUpOW0POY4MMDhobQg0OjEsNTowfX19fREAADwEAAA%3d&sri=True&elks=True&hls=T|article N|fmt O|c T|report N|fmt O|c O|, T|file N|fmt O|c O|, T|the O|%2b T|j N|rst O|c T|nnam N|ns O|c T|nrmf N|ns O|c O|, T|nrgn N|ns O|c O|, O|- O|%2b T|en N|la O|c O|%2b N|pd D|-0008 D| O|d O|%2b&dfd=FULL&istphst=True&arc=2&ari=1&hdl=[%7B2%3A%7B2%3A%22distdoc%3Aarchive/ArchiveDoc%3A%3AArticle/J000000020060902e2920002a%22%2C0%3A%5B%7B3%3A14406%2C0%3A%22NewsArticle%22%2C4%3A1%2C5%3A%22distdoc%3Aarchive/ArchiveDoc%3A%3AArticle/J000000020060902e2920002a%22%7D%5D%2C1%3A%22Article%22%7D%2C3%3A1%2C0%3A%22J000000020060902e2920002a%22%2C1%3A%22%20Emergency%20Room%3A%20How%20Bristol-Myers%20Fumbled%20Defense%20Of%20%244%20Billion%20Drug%20---%20CEO%20Dolan%27s%20Plan%20to%20Delay%20Generic%20Went%20Haywire%3B%20Board%20to%20Discuss%20His%20Fate%20---%20Doing%20a%20Deal%20With%20the%20%27Devil%27%20%20%22%2C4%3A%22j%22%2C5%3A0%7D]&

My program:

_XFORMSESSSTATE=ABR7MDp7VToiL2hhL2RlZmF1bHQuYXNweCIsMDp7MjoibWJtMCIsM6IBLTB4Ag0iUyIsMToiZW4iLDY6MCw3nAQFd2Fyd2ljazFtBTBsBwI4OjAsOXgDkAB2ATM6YAMDMCw3NTowxAcDMCw0OjAsfAEONzA6Miw3MzoxLDcyOjIsNDFsBAc4OjIsNjk6MSw2egQ2NXkBNngBjA4LMSwwOjI1LDE6MX0sNjB8BZAGeQw1cQ41cg41N2AMfRQ1eQw1YQk1iQQyYANlBjVtBzRxBTR5BjRxBTR5BjRxBTR5BjRxBTR5BjRxBTN9BDNlBjNhCDOMAmwXAzMyOjEsM2UGM20HM3UIM30JMnEFMnkGMnEFMnkGMnEKMnEKMmUGMn0EOXkBOWEDOWkEOXEFN2oJNzdoI3AfAjcxOjEscgMxOGABZQQxfQwxfQcxZQk4fQc4ZQk4dQM4YQY4dQM4fQQ4eQk4nARwEgg4OTowfSwxOnsxMGoEMTBmAzEwkARcC3UvN58WOjAsaQowfBBsBHQFcBJkBX0BN2wN5DgBMSwxMWUFNG0PNmAVKx8HMSw2eQc2fBEp6AZ1JzZxDDlsBzUQBwUxLDU0OjEsNX0tNWUGNXAhkjgxMHkVOHACKz4HMSz%2BOTEs%2FzkxLDRkCC0%2BBzEweg8xMGYoMTBiCzEwfhoxMGgVK7QHWCF0BD%2B3BzEsMnAg9z0xLDJ4F%2Bs%2BMSwyZQs5bBaJPjdxMjmMAmokOTV8LW0sN20CN20CN30SOXwEYQExdTMxlAFhGjFlCTFlDjGAF3QG60MxLDFtDzh9BDhoLOpDMSzrQzEsOGUOOGk2OHUpOW0POY4MMDhobQg0OjEsNTowfX19fREAADwEAAA%3D&sri=True&elks=True&hls=T%7Carticle+N%7Cfmt+O%7Cc+T%7Creport+N%7Cfmt+O%7Cc+O%7C%2C+T%7Cfile+N%7Cfmt+O%7Cc+O%7C%2C+T%7Cthe+O%7C%252b+T%7Cj+N%7Crst+O%7Cc+T%7Cnnam+N%7Cns+O%7Cc+T%7Cnrmf+N%7Cns+O%7Cc+O%7C%2C+T%7Cnrgn+N%7Cns+O%7Cc+O%7C%2C+O%7C-+O%7C%2B+T%7Cen+N%7Cla+O%7Cc+O%7C%2B+N%7Cpd+D%7C-0008+D%7C+O%7Cd+O%7C%2B&dfd=FULL&istphst=True&arc=2&ari=1&hdl=%5B%7B2%3A%7B2%3A%22%3Bdistdoc%3Aarchive%2FArchiveDoc%3A%3AArticle%2FJ000000020060902e2920002a%22%3B%2C0%3A%5B%7B3%3A14406%2C0%3A%22%3BNewsArticle%22%3B%2C4%3A1%2C5%3A%22%3Bdistdoc%3Aarchive%2FArchiveDoc%3A%3AArticle%2FJ000000020060902e2920002a%22%3B%7D%5D%2C1%3A%22%3BArticle%22%3B%7D%2C3%3A1%2C0%3A%22%3BJ000000020060902e2920002a%22%3B%2C1%3A%22%3B+Emergency+Room%3A+How+Bristol-Myers+Fumbled+Defense+Of+%244+Billion+Drug+---+CEO+Dolan%27s+Plan+to+Delay+Generic+Went+Haywire%3B+Board+to+Discuss+His+Fate+---+Doing+a+Deal+With+the+%27Devil%27++%22%3B%2C4%3A%22%3Bj%22%3B%2C5%3A0%7D%5D

Shown below is the NameValuePair[] creation code which corresponds to this POST method:

NameValuePair[] data = {

new NameValuePair("_XFORMSESSSTATE", getXFORMSESSSTATE(response)),

new NameValuePair("sri", "True"),

new NameValuePair("elks", "True"),

new NameValuePair("hls", "T|article N|fmt O|c T|report N|fmt O|c O|, T|file N|fmt O|c O|, T|the O|%2b T|j N|rst O|c T|nnam N|ns O|c T|nrmf N|ns O|c O|, T|nrgn N|ns O|c O|, O|- O|+ T|en N|la O|c O|+ N|pd D|-0008 D| O|d O|+"),

new NameValuePair("dfd", "FULL"),

new NameValuePair("istphst", "True"),

new NameValuePair("arc", "2"),

new NameValuePair("ari", "1"),

new NameValuePair("hdl", gethdl(response))

};

The values for XFORMSESSSTATE and hdl both come from the previous web page returned by the server and their values in ASCII are:

_XFORMSESSSTATE=ABR7MDp7VToiL2hhL2RlZmF1bHQuYXNweCIsMDp7MjoibWJtMCIsM6IBLTB4Ag0iUyIsMToiZW4iLDY6MCw3nAQFd2Fyd2ljazFtBTBsBwI4OjAsOXgDkAB2ATM6YAMDMCw3NTowxAcDMCw0OjAsfAEONzA6Miw3MzoxLDcyOjIsNDFsBAc4OjIsNjk6MSw2egQ2NXkBNngBjA4LMSwwOjI1LDE6MX0sNjB8BZAGeQw1cQ41cg41N2AMfRQ1eQw1YQk1iQQyYANlBjVtBzRxBTR5BjRxBTR5BjRxBTR5BjRxBTR5BjRxBTN9BDNlBjNhCDOMAmwXAzMyOjEsM2UGM20HM3UIM30JMnEFMnkGMnEFMnkGMnEKMnEKMmUGMn0EOXkBOWEDOWkEOXEFN2oJNzdoI3AfAjcxOjEscgMxOGABZQQxfQwxfQcxZQk4fQc4ZQk4dQM4YQY4dQM4fQQ4eQk4nARwEgg4OTowfSwxOnsxMGoEMTBmAzEwkARcC3UvN58WOjAsaQowfBBsBHQFcBJkBX0BN2wN5DgBMSwxMWUFNG0PNmAVKx8HMSw2eQc2fBEp6AZ1JzZxDDlsBzUQBwUxLDU0OjEsNX0tNWUGNXAhkjgxMHkVOHACKz4HMSz+OTEs/zkxLDRkCC0+BzEweg8xMGYoMTBiCzEwfhoxMGgVK7QHWCF0BD+3BzEsMnAg9z0xLDJ4F+s+MSwyZQs5bBaJPjdxMjmMAmokOTV8LW0sN20CN20CN30SOXwEYQExdTMxlAFhGjFlCTFlDjGAF3QG60MxLDFtDzh9BDhoLOpDMSzrQzEsOGUOOGk2OHUpOW0POY4MMDhobQg0OjEsNTowfX19fREAADwEAAA=

hdl=[{2:{2:";distdoc:archive/ArchiveDoc::Article/J000000020060902e2920002a";,0:[{3:14406,0:";NewsArticle";,4:1,5:";distdoc:archive/ArchiveDoc::Article/J000000020060902e2920002a";}],1:";Article";},3:1,0:";J000000020060902e2920002a";,1:"; Emergency Room: How Bristol-Myers Fumbled Defense Of $4 Billion Drug --- CEO Dolan's Plan to Delay Generic Went Haywire; Board to Discuss His Fate --- Doing a Deal With the 'Devil' ";,4:";j";,5:0}]

So from what I can see, iexplorer is encoding the POST data in a slightly different way to send it to the HTTP server, and thus unfortunately the server is not recognizing my request.

I don’t know if this is relevant or not, but every POST request until this point had the header: “Content-Type: application/x-www-form-urlencoded”, but this POST request has the header: “Content-Type: application/x-www-form-urlencoded; charset=UTF-8”.

So I guess my question is: how do I make httpClient encode the inputs in the same way as iexplorer, or is this not possible? Does it have something to do with the field FORM_URL_ENCODED_CONTENT_TYPE in the PostMethod class?

Thanks for reading, any help or advice would be greatly appreciated.

Yours sincerely,

Simon Pearson



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to