人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Rubyの質問です。httpリクエストの際にヘッダ情報にエスケープされない"(ダブルクォーテーション)をふくんだ文字列をいれたいです。Net::HTTP.getを使っているのですが、ヘッダはハッシュで{ヘッダ名 => 内容}でなければいけないらしく内容の中に"(ダブルクォーテーション)を入れると自動的に\"になってしまいます。自動的にエスケープされてしまうのですが、これをエスケープされない方法はありますか?
なぜこんな事をしたいかと言うと、某大手SNS、G様の携帯サイトを作っているからです。Oauthのところでヘッダの中にエスケープされないで"(ダブルクォーテーション)をいれた文字列を生成しなければいけないのですが、\"になってしまい本当に困っています。どなたかお助け下さい。

●質問者: hayaiee
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:GET HTTP NET OAuth Ruby
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● km1981
●100ポイント

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


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

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

FirefoxのLiveHttpHeaderを使って

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


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

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

◎質問者からの返答

ありがとうございます!

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

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


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エラーの様です。。。


2 ● km1981
●100ポイント

OAuthしたいのですか?

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


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

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

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

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

◎質問者からの返答

申し訳ありません。。。

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

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

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ