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

Ich versuche, JSON-Daten an die URL von Google Script zu senden, aber den obigen Fehler zu erhalten. Hier ist mein Code:Verwenden von Google Apps Script zum Veröffentlichen von JSON-Daten

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); 

} 

Ich versuchte, den Content-Typen zu ändern, sondern .Die Berechtigungscode funktioniert nicht arbeiten, weil ich in der Lage bin von der URL zu erhalten.

Hat jemand eine Vorstellung davon, wo ich falsch liege? Vielen Dank.

Antwort

14

Setzen Sie in Ihrem Optionen Objekt ein content wie folgt aus:

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

Content eines der erweiterten Parameter, die die Abrufmethode akzeptiert. Siehe mehr here.

+0

Vielen Dank für die Unterstützung ... es war eine große Hilfe .. – Shilpi

+1

So ärgerlich, dass UrlFetchApp.fetch() ignoriert/den "Content-Type" Header in der "Header" Option angegeben außer Kraft setzt. Ich habe mir über eine Stunde lang die Haare ausgerissen, um herauszufinden, was ich falsch mache, bis ich auf diese Antwort gestoßen bin! –

2

Es ist ziemlich unlogisch in UrlFetchApp Syntax aber:

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

Verschiebt schön zu dieser curl:

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

Übersetzt dies in 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); 
} 
Verwandte Themen