余裕でさっき書いた文章は嘘っぱちのクソ文章でした。ごめんなさい。
plusapi.js は直さなくてもいいです。多分。
server.js のContent-Length がちゃんと指定されてないから問題なのだみたいでした。
YungSang はちっとも悪くないのである。俺はやっぱりだめな男だ。ごめんねYungSang。
var body = JSON.strigify(json) したもののバイト数と、
body.length が同じだと、エラーは発生しないけど、その誤差があると、
JSONファイルが正しく外に出ないで、エラーが出るみたい。
というわけで、server.jsの下のほうを
// 改行とスペースを改行だけにする
while(body.match(/\n\s/gi)){
body = body.replace(/\n\s/gi,"\n");
}
// 改行を取り除く
body = body.replace(/\n/gi,"");
// バイト数を得る(後述)
var bodyByte = (function(body){
var c = 0;
for(var i = 0,l = body.length; i < l; i ++){
c += (escape(body.charAt(i)).length < 4) ? 1 : 2;
}
return c;
})(body);
// バイト数とbody.length の差を バイト数に追加。
bodyByte += (bodyByte - body.length);
// ヘッダをセットして送信
res.header('Content-Type', 'application/json');
res.header('Content-Length', bodyByte);
res.send(body);
改行を取り除く辺りが必要なのか否かは、ちょっと不明。
取りあえず、そうやったら動いているので、そうしています。
正規表現を理解していないのが露呈している感じです。
で、バイト数を得るってところは、
文字列のバイト数を求める
ここを参考にしました。無駄に無名関数。
というわけで、UTF-8コードにしなくても、activity.access をいじらなくても、データが取れました。
よかったよかった。ありがとうYungSang。グレイトフル・リスさん。
0 件のコメント:
コメントを投稿