2013-06-27 29 views
8
Server response : HTTP Status 415 - Unsupported Media Type 

Próbuję opublikować dane JSON na adres URL ze skryptu google, ale otrzymuję powyższy błąd. Oto mój kod:Używanie skryptu Google Apps do publikowania danych JSON

function myFunctionpost() { 
    var url = "http://abc.xyz.org/jira/rest/api/2/issue"; 
    var data = {"project":{ "key": "KEY"},"summary": "create issue.", "description":     "Creating of an issue from google spreadsheet using the REST API", "issuetype": {"name": "Bug"}} ; 
    var payload = JSON.stringify(data); 

    var headers = { "Accept":"application/json", 
       "Content-Type":"application/json", 
       "Authorization":"Basic _authcode_" 
      }; 

    var options = { "method":"POST", 
       "headers": headers, 
       "payload" : payload 
       }; 
    var response = UrlFetchApp.fetch(url, options); 
Logger.log(response); 

} 

Próbowałem zmienić typ zawartości, ale nie działa .Powierzchnia AUTHCODE pracuje, bo jestem w stanie dostać się z adresem URL.

Ktoś ma pojęcie o tym, gdzie idę źle? Dzięki.

Odpowiedz

14

umieścić w opcji Object contentType tak:

var options = { "method":"POST", 
      "contentType" : "application/json", 
      "headers": headers, 
      "payload" : payload 
      }; 

ContentType jest jednym z zaawansowanymi parametrami FETCH metoda akceptuje. Zobacz więcej here.

+0

dziękuję za pomoc ... to było bardzo pomocne .. – Shilpi

+1

tak irytujące, że UrlFetchApp.fetch() pomija/nadpisuje „Content-Type” nagłówek określonego w opcji „nagłówki”. Przez ponad godzinę wyrywałem sobie włosy, próbując dojść do tego, co robię źle, dopóki nie natknąłem się na tę odpowiedź! –

2

Jest dość licznik intuicyjne w składni UrlFetchApp ale tym:

POST /api/ra/v1/ping HTTP/1.0 
Host: app.kigo.net 
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ= 
Content-Type: application/json 

Tłumaczy ładnie do tego zawinięcia:

curl https://app.kigo.net/api/ra/v1/ping -X POST-H "Autoryzacja: Podstawowe dXNlcm5hbWU6cGFzc3dvcmQ =" - H "Content-Type: application/json"

Tłumaczenie na to w Google App Script:

function myFunction() { 

    var headers = { 
    "Authorization" : "Basic dXNlcm5hbWU6cGFzc3dvcmQ=" 
    }; 

    var options = 
    { 
    "contentType" : "application/json", 
    "method" : "post", 
    "headers" : headers, 
    "payload" : "test" 
    }; 

    var response = UrlFetchApp.fetch("https://app.kigo.net/api/ra/v1/ping", options); 
}