Just to clarify, is this working with POST?

On Mon, Aug 14, 2017 at 9:01 AM, Isuru Haththotuwa <[email protected]> wrote:

> The best way to figure out this would be to debug the MSF4J layer.
>
> @Thusitha/Chanaka: Can you please give some input on where to start
> debugging for this particular case?
>
> On Sun, Aug 13, 2017 at 12:54 PM, Menuka Warushavithana <[email protected]>
> wrote:
>
>> Hi,
>> I'm working on creating a CLI tool for importing and exporting APIs
>> between different environments (for WSO2 API Manager 3.0.0) using Golang.
>>
>> I have an issue with importing APIs.
>> The following curl command works fine.
>> *`curl -k -F "[email protected]" -X PUT -H "Authorization: Bearer
>> <access_token>" https://localhost:9292/api/am/publisher/v1.0/import/apis
>> <https://localhost:9292/api/am/publisher/v1.0/import/apis>`*
>>
>> The problem is with mapping this to Go code.
>> Here's what I wrote at first.
>>
>> func main() {
>>     data, err := os.Open("./exported.zip")
>>     accessToken := "<access_token>"
>>     if err != nil {
>>         fmt.Println("Error oening file")
>>         panic(err)
>>     }
>>
>>     req, reqErr := http.NewRequest(http.MethodPut, "
>> https://localhost:9292/api/am/publisher/v1.0/import/apis";, data)
>>     if reqErr != nil {
>>         fmt.Println("Error creating request")
>>         panic(reqErr)
>>     }
>>
>>     req.Header.Add("Content-Type", "multipart/form-data") // response is
>> 500 with or without this line
>>     req.Header.Add("Authorization", "Bearer "+accessToken)
>>
>>     tr := &http.Transport{
>>         TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, // for
>> skipping errors in https
>>     }
>>
>>     client := &http.Client{Transport: tr}
>>     res, resErr := client.Do(req)
>>
>>     if resErr != nil {
>>         fmt.Println("Error in response")
>>         panic(resErr)
>>     }
>>
>>     body, err := ioutil.ReadAll(res.Body)
>>
>>     fmt.Println("Response:", res)
>>     fmt.Println("Body:", string(body))
>>     fmt.Println("Status:", res.Status)
>>
>>     defer res.Body.Close()
>> }
>>
>> This returns a *500 Internal Server Error.*
>>
>> But the request works fine with *Postman* client. Therefore, I tried
>> putting the extra headers generated by Postman in Go code.
>>
>> func main() {
>>     url := "https://localhost:9292/api/am/publisher/v1.0";
>>     accessToken := "<access_token>"
>>
>>     payload := strings.NewReader("------WebKi
>> tFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data;
>> name=\"file\"; filename=\"./exported.zip\"\r\nContent-Type:
>> application/zip\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
>>
>>     req, _ := http.NewRequest(http.MethodPut, url, payload)
>>
>>     req.Header.Add("content-type", "multipart/form-data;
>> boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
>>     req.Header.Add("authorization", "Bearer "+accessToken)
>>     req.Header.Add("cache-control", "no-cache")
>>
>>     tr := &http.Transport{
>>         TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, // for
>> skipping errors in https
>>     }
>>
>>     client := &http.Client{Transport: tr}
>>     resp, _ := client.Do(req)
>>
>>     if resp != nil {
>>
>>         body, _ := ioutil.ReadAll(resp.Body)
>>
>>         fmt.Println(resp)
>>         fmt.Println(string(body))
>>     } else {
>>         fmt.Println("Null Response")
>>     }
>>
>>     fmt.Println(resp.Status)
>> }
>>
>> This returns a *405 - Method Not Allowed*
>>
>> So, Postman works. Curl works. Go does not.
>> I googled on 'multipart/form-data' under HTTP, but that didn't help
>> either.
>>
>> Your advice is much appreciated in solving this issue.
>>
>> Thanks and Regards
>>
>> *Menuka Warushavithana*
>> *Software Engineering Intern*
>> *WSO2*
>>
>> *Moblie:      + <%2B%2094%2011%202145345%20%C2%A0Ext.%205737> 94 77
>> 6979690 <077%20697%209690>*
>>
>>
>>
>
>
> --
> Thanks and Regards,
>
> Isuru H.
> +94 716 358 048 <071%20635%208048>* <http://wso2.com/>*
>
>
>


-- 
Thanks and Regards,

Isuru H.
+94 716 358 048* <http://wso2.com/>*
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to