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

Reply via email to