Friday, 15 April 2011

HTTP POST request to JIRA using Java yields 400 bad request error, curl works fine -



HTTP POST request to JIRA using Java yields 400 bad request error, curl works fine -

so i'm trying retrieve info jira issues through rest api using java, maintain getting 400 error. sense there's stupid i'm missing, can help me find out what's wrong this? edit: realised i'm not sending username/password jira in java program, i'm unsure how that... help here great! here code have (company name edited):

import java.io.*; import java.net.*; import java.util.*; public class jiraconnector { public static void main(string[] args) { seek { //store necessary query info url jiraurl = new url("http://jira.somecompany.com/rest/api/2/search"); string info = "'{\"jql\":\"project = proj\"}'"; //establish connection , request properties httpurlconnection connection = (httpurlconnection)jiraurl.openconnection(); connection.setrequestmethod("post"); connection.setrequestproperty("accept", "*/*"); connection.setrequestproperty("content-type", "application/json"); connection.setdooutput(true); connection.setdoinput(true); connection.connect(); outputstreamwriter wr = new outputstreamwriter(connection.getoutputstream()); wr.write(data.tostring()); wr.flush(); wr.close(); reader in = new bufferedreader(new inputstreamreader(connection.getinputstream())); (int c; (c = in.read()) >= 0; system.out.print((char)c)); } grab (malformedurlexception e) { system.err.println("malformedurlexception: " + e.getmessage()); } grab (java.net.unknownserviceexception e) { system.err.println("unknownserviceexception: " + e.getmessage()); } grab (ioexception e) { system.err.println("ioexception: " + e.getmessage()); } } }

for record, using curl command works:

curl -d- -u- user:password -x post -h "content-type: application/json" --data '{"jql:"project=prof"}' "http://jira.somecompany.com/rest/api/2/search"

a general tip first: utilize instance firefox tamperdata add-on, enables trace regular form submit, , inspect everything. in case proxy monitor might more of help. also:

curl --trace-ascii ...

tamperdata show goes wrong.

without encoding parameter current platform encoding taken; non-portable.

outputstreamwriter wr = new outputstreamwriter(connection.getoutputstream(), standardcharsets.utf_8); reader in = new bufferedreader(new inputstreamreader( connection.getinputstream(), standardcharsets.utf_8));

java http post jira jira-rest-api

No comments:

Post a Comment