0

あなたの助けが必要です。私は、Web サービスに要求して JSON 形式でデータを取得する JavaScript コードを開発しています。

このようにWebサービスに尋ねると:

https://Server/ServiceEndPoint?id=12345

MyApplication は、次のように他のパラメーターを Web サービス URL に追加します。

https://Server/ServiceEndPoint?id=12345 &callback=jQuery18205735686348496944_1459416484049&_=1459416484892

この jQuery セッション ID は汎用です。

そのため、Fiddler を使用して Web サービスの応答をシミュレートしています。そして、この jQuery セッション ID を次のように応答の先頭に追加する必要があります。

jQuery18205735686348496944_1459416484049({"データ":"JSON データ"})

誰でも私がこれを行うのを手伝ってくれますか?

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

4

4 に答える 4

1

Fiddler の AutoResponder は、これ自体を行うことはできません (要求 URL に基づいて応答本文を変更できないため)。代わりに、簡単な FiddlerScript を記述してそれを行う必要があります。例: ルール > ルールのカスタマイズ > OnBeforeRequest

    if (oSession.uriContains("server/ServiceEndPoint?")) {
        oSession.utilCreateResponseAndBypassServer();
        oSession.oResponse.headers.Add("Content-Type", "application/json");
        oSession.ResponseBody = System.IO.File.ReadAllBytes("C:\\Your\\File.txt");              
        // TODO:Copy the callback value to the front of the response string here.      
    }
于 2016-03-31T21:11:47.657 に答える
1

私はそれを行うためにFiddlerScriptを使用しました:

    if (oSession.HostnameIs("ServerName")){

        var body = "";
        var s_qs = (oSession.url + "?").split("?")[1];

        var querystring = HttpUtility.ParseQueryString(s_qs);
        var s_callback = querystring.Get("callback");

        if(oSession.uriContains("EndPointName"))
        {
            body = s_callback + "({'data':'datContent'})";
        }
        oSession.utilSetResponseBody(body);
    }
于 2016-04-01T10:32:11.570 に答える
0

静的コンテンツ (ファイル コンテンツなど) を返すと仮定すると、動的な jquery コールバック関数名を取得して、静的に返すものをラップする必要があります。そのため、上記の回答の 1 つを変更し、対象としていない JSONP 応答に影響を与えないように注意しました。

[ルール] > [ルールのカスタマイズ...] で、次の操作を行います。

  1. このインポートがまだ存在しない場合は、ファイルの先頭に追加します。
  2. OnBeforeResponse(oSession) メソッドを見つけて、次を追加します。

    //Autofix all JSONP responses
    if (oSession.uriContains("callback=jQuery")) {
        var s_qs = (oSession.url + "?").split("?")[1];
    
        var querystring = HttpUtility.ParseQueryString(s_qs);
        var s_callback = querystring.Get("callback"); 
    
        var oldBody = oSession.GetResponseBodyAsString();
        if (oldBody.StartsWith(s_callback)) return;
    
        var body = String.Concat(s_callback, "(", oSession.GetResponseBodyAsString(), ")");
    
        oSession.utilSetResponseBody(body);
    }
    

これにより、{ "test": "testValue" } の JSON 応答が jQuery9827345872635_982735982375({ "test": "testValue" }) に変換されます (ここでの jQuery コールバックは、説明のために生成したランダムな BS です)。

于 2018-09-18T14:18:09.903 に答える