1

Google シート API への PUT リクエストで問題が発生しています。私はこのコードを持っています

    spreadsheet_inputer := WebClient(`$google_sheet_URI_cells/R3C6?access_token=$accesstoken`)
    xml_test := XDoc{
    XElem("entry")
       {
         addAttr("xmlns","http://www.w3.org/2005/Atom")
         addAttr("xmlns:gs","http://schemas.google.com/spreadsheets/2006")
         XElem("id") { XText("https://spreadsheets.google.com/feeds/cells/$spreadsheet_id/1/private/full/R3C6?access_token=$accesstoken"), },
         XElem("link") { addAttr("rel","edit");addAttr("type","application/atom+xml");addAttr("href","https://spreadsheets.google.com/feeds/cells/$spreadsheet_id/1/private/full/R3C6?access_token=$accesstoken"); },
         XElem("gs:cell") { addAttr("row","3");addAttr("col","6");addAttr("inputValue","testing 123"); },
       },
    }

    spreadsheet_inputer.reqHeaders["If-match"] = "*"
    spreadsheet_inputer.reqHeaders["Content-Type"] = "application/atom+xml"
    spreadsheet_inputer.reqMethod = "PUT"
    spreadsheet_inputer.writeReq
    spreadsheet_inputer.reqOut.writeXml(xml_test.writeToStr).close
    echo(spreadsheet_inputer.resStr)

現在、それは戻ってきます

sys::IOErr: No input stream for response 0

echo ステートメントで。

私はすべての必要なデータを持っています (少なくとも私はかなり確信しています)。ここで動作しますhttps://developers.google.com/oauthplayground/

カレンダーを正確に更新しないことに注意してください。

編集:応答コードを返してもらいましたが、それは 0 でした。これが Google シート API から何を意味するかについてのポインタはありますか? それともファントム Web クライアントですか?

4

1 に答える 1

1

WebClient.resCodeはnull不可であるIntため、デフォルトでは0であるため、問題はリクエストが送信されていないか、レスポンスが読み取られていないことです。

あなたは明らかにリクエストを書いているので、問題は後者のはずです。の前にWebClient.readRes()を呼び出してみてくださいresStr

この readRes()

応答ステータス行と応答ヘッダーを読み取ります。このメソッドは、writeReq および reqOut を介してリクエストが書き込まれた後に呼び出すことができます。このメソッドが完了すると、応答ステータスとヘッダーが利用可能になります。応答本文がある場合は、resIn を介して読み取ることができます。ネットワークまたはプロトコル エラーが発生した場合は、IOErr をスローします。これを返してください。

これを試して:

echo(spreadsheet_inputer.readRes.resStr)

次の行でも問題が発生すると思われます。

spreadsheet_inputer.reqOut.writeXml(xml_test.writeToStr).close

これwriteXml()は、文字列をエスケープして XML セーフにするためですが、文字列を単に印刷する必要がある場合があります。これを試して:

spreadsheet_inputer.reqOut.writeChars(xml_test.writeToStr).close
于 2014-12-06T10:39:00.357 に答える