2017-10-12 6 views
0

私はrubyとtyphoeus-gemを使ってコンテンツをXWikiページにRESTful APIでアップロードしています。これは完全に機能します。 しかし、タグのアップロードに関しては、私はスペース文字で苦労しています。 カンマ区切りタグを「スペース文字、別のタグを持つ」のようなGUIで追加すると、「スペース文字を含む」と「別のタグ」の2つのタグが表示されます。 これは私の望むものですが、これはAPIでは機能しません。上記の例では、5つのタグがスペースで区切られます。ページへ XWiki-API経由で間隔を空けたタグをアップロード

  • 文字
  • タグ
  • API Documentation describes how to add a tab

  • 空間を有する

    • 。 "application/x-www-form-urlencoded"の場合、フィールド名 "tag"が使用されています。 このフィールドタイプを使用すると、アップロードできるタグは1つだけです。これを繰り返すと、前のタグが上書きされます。 フィールドタイプとして「タグ」を試したところ、複数のタグをアップロードすることができました。しかし、上記のようにスペーシング問題は現れます。

      url = mainpage_url + "/tags" 
      tags = "having space characters, another tag" 
      
      # HTTP PUT request 
      request = Typhoeus::Request.new(
          url, 
          ssl_verifypeer: false, 
          method: :put, 
          userpwd: "#{username}:#{password}", 
          headers: {'Content-Type'=> "application/x-www-form-urlencoded;charset=UTF-8"}, 
          body: {tags: tags} 
      ) 
      
      # Handling HTTP errors 
      request.on_complete do |response| 
          if response.success? 
           #$log.info("Tags uploaded.") 
          elsif response.timed_out? 
           $log.error("Time out: Tags not uploaded.") 
          elsif response.code == 0 
           $log.fatal("Could not get http response while uploading Tags. #{response.return_message}") 
          else 
           $log.fatal("HTTP request failed while uploading Tags. #{response.code.to_s}") 
          end 
      end 
      
      request.run 
      response = request.response 
      puts response.body 
      

      を私はすでに試した:

      • は "+"、 "%20" と "\ sの" とタグスペースを交換ここ

        は、私が使用しているRubyコードです。

      • 使用text/plainで、アプリケーション/メディアタイプ

      としてXML Iは、アプリケーション/ xmlのが解決策になることができると思います。私は成功せずに別のXML文字列を試した。多分あなたは私のための手がかりを持っています。

  • 答えて

    0

    質問を書いていましたが、スペースを改行(\ n)に置き換えると、XWikiがスペースでタグを分割できなくなります。で意図したとおりに

    tags = "having\nspace\ncharacters,another\ntag" 
    
    これはなります

    ::だから文字列が見えるように持って

    • たスペース文字

    が私を修正して別のタグが、私はしないでくださいこれがベストプラクティスだと思います。別の解決策があれば、本当に歓迎です。

    関連する問題