Hi Anuruddha, I tried changing the content type into *a**pplication/x-www-form-urlencoded *as you suggested. That solved the issue.
Following is the code with the correction. *import (* * "bytes"* * "fmt"* * "net/http"* * "io/ioutil"* *)* *func main() {* * url := "https://apps.cloud.wso2.com/appmgt/site/blocks/user/login/ajax/login.jag <https://apps.cloud.wso2.com/appmgt/site/blocks/user/login/ajax/login.jag>"* * fmt.Println("URL:>", url)* * var jsonStr = []byte(`action=login&userName=<username>&password=<password>`)* * req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonStr))* * req.Header.Set("Content-Type", "application/x-www-form-urlencoded")* * client := &http.Client{}* * resp, err := client.Do(req)* * if err != nil {* * panic(err)* * }* * defer resp.Body.Close()* * fmt.Println("response Status:", resp.Status)* * fmt.Println("response Headers:", resp.Header)* * body, _ := ioutil.ReadAll(resp.Body)* * fmt.Println("response Body:", string(body))* *}* Thanks. Regards, Dilhasha Fathima Dilhasha Nazeer <http://lk.linkedin.com/in/dilhasha/> (M.N.F.Dilhasha) Undergraduate | Department of Computer Science and Engineering University of Moratuwa Sri Lanka On Mon, Jun 22, 2015 at 8:19 AM, Anuruddha Premalal <anurud...@wso2.com> wrote: > Hi Fathima, > > You could use wire-shark or a built in GO functionality to examine the > POST request(body+headers). Try to compare the difference between the > normal curl command and the Go POST request body and headers, that way > you'll find a clue about the issue. > > Regards, > Anuruddhs. > > On Sun, Jun 21, 2015 at 10:33 AM, Fathima Dilhasha <dilhasha....@gmail.com > > wrote: > >> Hi Punnadi, >> >> Thank you. >> I tried replacing the query in my code with the json string as the post >> suggests as follows. >> >> var query = >> []byte(`{"action"="login","userName"="<username>","password"="<password>"}`) >> >> Following is the response I got. >> >> *response Status: 200 OK* >> *response Headers: map[Server:[nginx/1.4.6 (Ubuntu)] Date:[Sun, 21 Jun >> 2015 17:20:26 GMT] Content-Type:[text/html] Connection:[keep-alive] >> Set-Cookie:[JSESSIONID=80150F3A762F6E3281F7D6395ACC91EE; Path=/appmgt/; >> Secure; HttpOnly]]* >> *response Body: Action is not specified* >> >> It seems that the problem is in the 'query' part in both cases, I get the >> same "Action is not specified" response. >> The correct format for that will solve the issue I think. >> >> Thanks. >> Regards, >> Dilhasha >> >> Fathima Dilhasha Nazeer <http://lk.linkedin.com/in/dilhasha/> >> (M.N.F.Dilhasha) >> Undergraduate | Department of Computer Science and Engineering >> University of Moratuwa >> Sri Lanka >> >> On Sun, Jun 21, 2015 at 10:28 PM, Punnadi Gunarathna <punn...@wso2.com> >> wrote: >> >>> Hi Fathima, >>> >>> Try this also. >>> >>> >>> http://stackoverflow.com/questions/24455147/go-lang-how-send-json-string-in-post-request >>> >>> On Sun, Jun 21, 2015 at 2:19 PM, Fathima Dilhasha < >>> dilhasha....@gmail.com> wrote: >>> >>>> Hi, >>>> >>>> I'm trying to implement the following REST call (curl command given) to >>>> WSO2 Appfactory in 'GO' using net/http [1] >>>> <http://golang.org/pkg/net/http/>. >>>> >>>> >>>> *curl -v -c cookies1 -X POST -k >>>> https://apps.cloud.wso2.com/appmgt/site/blocks/user/login/ajax/login.jag >>>> <https://apps.cloud.wso2.com/appmgt/site/blocks/user/login/ajax/login.jag> >>>> -d 'action=login&userName=<username>&password=<password>' * >>>> >>>> The result from this command is as follows. >>>> >>>> ** Hostname was NOT found in DNS cache* >>>> ** Trying 54.209.187.16...* >>>> ** Connected to apps.cloud.wso2.com <http://apps.cloud.wso2.com> >>>> (54.209.187.16) port 443 (#0)* >>>> ** successfully set certificate verify locations:* >>>> ** CAfile: none* >>>> * CApath: /etc/ssl/certs* >>>> ** SSLv3, TLS handshake, Client hello (1):* >>>> ** SSLv3, TLS handshake, Server hello (2):* >>>> ** SSLv3, TLS handshake, CERT (11):* >>>> ** SSLv3, TLS handshake, Server key exchange (12):* >>>> ** SSLv3, TLS handshake, Server finished (14):* >>>> ** SSLv3, TLS handshake, Client key exchange (16):* >>>> ** SSLv3, TLS change cipher, Client hello (1):* >>>> ** SSLv3, TLS handshake, Finished (20):* >>>> ** SSLv3, TLS change cipher, Client hello (1):* >>>> ** SSLv3, TLS handshake, Finished (20):* >>>> ** SSL connection using ECDHE-RSA-AES256-GCM-SHA384* >>>> ** Server certificate:* >>>> ** subject: C=US; ST=California; L=Palo Alto; O=WSO2, Inc.; >>>> CN=*.cloud.wso2.com <http://cloud.wso2.com>* >>>> ** start date: 2015-05-21 00:00:00 GMT* >>>> ** expire date: 2018-06-06 12:00:00 GMT* >>>> ** issuer: C=US; O=DigiCert Inc; OU=www.digicert.com >>>> <http://www.digicert.com>; CN=DigiCert SHA2 High Assurance Server CA* >>>> ** SSL certificate verify ok.* >>>> *> POST /appmgt/site/blocks/user/login/ajax/login.jag HTTP/1.1* >>>> *> User-Agent: curl/7.35.0* >>>> *> Host: apps.cloud.wso2.com <http://apps.cloud.wso2.com>* >>>> *> Accept: */** >>>> *> Content-Length: 75* >>>> *> Content-Type: application/x-www-form-urlencoded* >>>> *> * >>>> ** upload completely sent off: 75 out of 75 bytes* >>>> *< HTTP/1.1 200 OK* >>>> ** Server nginx/1.4.6 (Ubuntu) is not blacklisted* >>>> *< Server: nginx/1.4.6 (Ubuntu)* >>>> *< Date: Sun, 21 Jun 2015 08:25:21 GMT* >>>> *< Content-Type: text/html* >>>> *< Content-Length: 5* >>>> *< Connection: keep-alive* >>>> ** Added cookie JSESSIONID="************************" for domain >>>> apps.cloud.wso2.com <http://apps.cloud.wso2.com>, path /appmgt/, expire 0* >>>> *< Set-Cookie: JSESSIONID=****************************; Path=/appmgt/; >>>> Secure; HttpOnly* >>>> *< * >>>> *true* >>>> ** Connection #0 to host apps.cloud.wso2.com >>>> <http://apps.cloud.wso2.com> left intact* >>>> >>>> >>>> My code is as follows. >>>> >>>> package main >>>> >>>> import ( >>>> "bytes" >>>> "fmt" >>>> "net/http" >>>> ) >>>> >>>> func main() { >>>> client := &http.Client{} >>>> var query = >>>> []byte(`action=login&userName=<username>&password=<password>`) >>>> r, _ := http.NewRequest("POST", >>>> "https://apps.cloud.wso2.com/appmgt/site/blocks/user/login/ajax/login.jag", >>>> bytes.NewBuffer(query)) >>>> resp, _ := client.Do(r) >>>> fmt.Println(resp) >>>> } >>>> >>>> >>>> The result from running the above code is as follows. >>>> >>>> *&{200 OK 200 HTTP/1.1 1 1 map[Server:[nginx/1.4.6 (Ubuntu)] Date:[Sun, >>>> 21 Jun 2015 08:38:38 GMT] Content-Type:[text/html] Connection:[keep-alive] >>>> Set-Cookie:[JSESSIONID=5820BCE0F4338F90735C9AFE7ED53B95; Path=/appmgt/; >>>> Secure; HttpOnly]] 0xc208213480 -1 [chunked] false map[] 0xc208026dd0 >>>> 0xc2081f6060}* >>>> >>>> The request fails. I can't seem to find another way to perform this >>>> REST API call. Does anyone know a better way of implementing this request? >>>> >>>> [1] http://golang.org/pkg/net/http/ >>>> >>>> Thanks. >>>> Regards, >>>> Dilhasha >>>> >>>> >>>> Fathima Dilhasha Nazeer <http://lk.linkedin.com/in/dilhasha/> >>>> (M.N.F.Dilhasha) >>>> Undergraduate | Department of Computer Science and Engineering >>>> University of Moratuwa >>>> Sri Lanka >>>> >>>> _______________________________________________ >>>> Dev mailing list >>>> Dev@wso2.org >>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>> >>>> >>> >>> >>> -- >>> Thanks and Regards, >>> >>> Punnadi Gunarathna >>> Senior Software Engineer, >>> WSO2, Inc.; http://wso2.com <http://wso2> >>> Blog: http://hi-my-world.blogspot.com/ >>> Tel : 94 11 214 5345 >>> Fax :94 11 2145300 >>> >>> >>> >>> <http://lalajisureshika.blogspot.com/> >>> >> >> >> _______________________________________________ >> Dev mailing list >> Dev@wso2.org >> http://wso2.org/cgi-bin/mailman/listinfo/dev >> >> > > > -- > *Anuruddha Premalal* > Software Eng. | WSO2 Inc. > Mobile : +94710461070 > Web site : www.regilandvalley.com > >
_______________________________________________ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev