2009-09-17 66 views
2

我有一個非常長的字符串,我需要傳遞一個URL,例如10,000個字符。任何人都知道一個很好的方法來縮短到2000個字符,然後在服務器上以某種方式獲得原始回來?如何縮短一個字符串並在以後找回原始內容?

這是Objective-C與Ruby交談,但這應該不重要。

+0

我不確定發送一個10k字符的URL的好處,但如果有一種方法可以將10k字符轉換爲<2k,並且可以轉換回原始10k我也想知道。 – 2009-09-17 18:38:26

回答

5

你可以發佈數據嗎? 如果使用GET,URL的最大長度大約爲4000個字符。如果您發佈它,你有沒有限制(除超時內存等)

This article有關從Objective-C的做一個講座後

+1

+1不回答問題,而是給出(可能)真實問題的解決方案 – 2009-09-17 18:37:40

+0

哇,今天早上我有點慢。當然。感謝您的快速回復。 所以這引發了一個有趣的思考過程。沒有使用數據庫,有沒有人知道一個雙向函數,可以收縮一個字符串,然後把它拿回來? – Nader 2009-09-17 18:46:16

+0

如果您執行POST,則始終可以啓用HTTP壓縮。這將透明地壓縮整個連接,所以它發生得更快。 – 2009-09-17 18:50:34

1

你確定你必須在把它作爲一個URL?也許POST數據或會話會更合適?否則可以將字符串存儲在數據庫中,並將插入的記錄的鍵作爲URL參數返回。如果這是一個安全問題(因爲人們可以更改數字,如果它是一個整數鍵),您可以創建一個UUID作爲鍵。

0

你可以嘗試運行它通過Base64。如果字符串保證只包含可能字符的一個子集 - 例如[a-zA-Z0-9] - 通過將這些字符轉換爲唯一序號並使用更高的基本編碼,可以將其縮短更多。

但是使用POST可能會更容易。

1

將其存儲在數據庫中,然後只傳遞url中字符串的id。

0

好吧,壓縮它,並Base64編碼結果。如果字符串具有非常特定的格式,則自定義編碼甚至可以產生更好的壓縮。你能給個例子嗎?

+0

@丹尼爾:根據數據的可壓縮性,他最終可能會以比他開始時更長的字符串。也不能保證他將得到他所需要的5:1壓縮來完成所描述的任務。 – 2009-09-17 18:41:38

+0

這就是爲什麼我要求一個例子...;) – 2009-09-17 18:46:55

0

我會將這些信息保存到數據庫(或任何其他持久性源),然後在URL中傳遞對它的引用。

源和目標都需要訪問數據庫,但這在大多數情況下不是問題。

相關問題