Rubyの質問です。httpリクエストの際にヘッダ情報にエスケープされない"(ダブルクォーテーション)をふくんだ文字列をいれたいです。Net::HTTP.getを使っているのですが、ヘッダはハッシュで{ヘッダ名 => 内容}でなければいけないらしく内容の中に"(ダブルクォーテーション)を入れると自動的に\"になってしまいます。自動的にエスケープされてしまうのですが、これをエスケープされない方法はありますか?

なぜこんな事をしたいかと言うと、某大手SNS、G様の携帯サイトを作っているからです。Oauthのところでヘッダの中にエスケープされないで"(ダブルクォーテーション)をいれた文字列を生成しなければいけないのですが、\"になってしまい本当に困っています。どなたかお助け下さい。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/07/20 02:35:37
  • 終了:2011/07/27 02:40:03

回答(2件)

id:km1981 No.1

km1981回答回数429ベストアンサー獲得回数492011/07/20 10:26:24

ポイント100pt

ダブルクォーテーションを送信したいんですよね?


送信文字列を "abc\"def" ように書けば送信されるはずですが

何か別の処理をしていませんか?

FirefoxのLiveHttpHeaderを使って

本当にエスケープ記号が含まれているかどうか確認してみてください


それでもダメなようだったら

問題の部分のスクリプトをみせてください

id:hayaiee

ありがとうございます!

確かにもしかしたら別の理由かもしれません。。。

ソースをのせます!よろしければお手隙の時にご覧になっていただけますと幸いです。


uri = "http://xxxxxxx.jp/api/rest/people/@me/@self"

header = %Q(Authorization: OAuth oauth_version="1.0",oauth_nonce="#{@oauth_nonce}",oauth_timestamp="#{@oauth_timestamp}",oauth_consumer_key="#{@consumer_key}",oauth_token="#{@oauth_token}",oauth_signature="#{@signiture}",oauth_signature_method="HMAC-SHA1")

header = {"Authorization" => header}

uri = URI.parse(uri) if uri.respond_to? :to_str

Net::HTTP.start(uri.host,uri.port) do |http|

path_query = uri.path + (uri.query ? ( '?' + uri.query) : '')

res = http.get(uri.path, headers)

end

resの中はUnauthorized 401エラーの様です。。。

2011/07/20 11:21:01
id:km1981 No.2

km1981回答回数429ベストアンサー獲得回数492011/07/21 00:30:12

ポイント100pt

OAuthしたいのですか?

ソースがほとんど間違っているので直しようがありません・・・・


ふつうはOauthライブラリを使うと思うんですけど

なぜ無理矢理にHttpでやろうとしているのかがわかりません

大手の仕事ならフレームワークがあると思います

職場の専門家や先輩に聞いた方がいいです

id:hayaiee

申し訳ありません。。。

サイト独自のパラメータやルールが多くて、OAuthのライブラリを使うことが困難そうだったので、自力でやってます。

でもなんとかその後GETの方はできました!アドバイスありがとうございます!

ただ今度はPOSTの問題が出てきて悩んでいます。

別の質問として立てさせていただきますので、もしよろしければご覧になっていただけましたら幸いです。

ありがとうございました!

2011/07/24 19:41:46
  • id:tobeoscontinue
    %Q(Authorization: OAuth
    のAuthorization: は必要ないと思います。(ハッシュのheader(キー部分)が展開される時に付加される)

    >>内容の中に"(ダブルクォーテーション)を入れると自動的に\"になってしまいます。
    ターミナルなどで表示される際に付加されて見えるだけで実際のデータとしては付加されていないと思うのですが。
  • id:hayaiee
    ありがとうございます!
    確かにおっしゃるととおりで、その後できました!
    また宜しくお願い致します。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません