diff --git a/OpenMetaverse.StructuredData/StructuredData.cs b/OpenMetaverse.StructuredData/StructuredData.cs index dc996864..51b724f7 100644 --- a/OpenMetaverse.StructuredData/StructuredData.cs +++ b/OpenMetaverse.StructuredData/StructuredData.cs @@ -664,7 +664,18 @@ namespace OpenMetaverse.StructuredData this.value = value; } - public override string AsString() { return value != null ? value.AbsoluteUri : String.Empty; } + public override string AsString() + { + if (value != null) + { + if (value.IsAbsoluteUri) + return value.AbsoluteUri; + else + return value.ToString(); + } + return string.Empty; + } + public override Uri AsUri() { return value; } public override byte[] AsBinary() { return Encoding.UTF8.GetBytes(AsString()); } public override string ToString() { return AsString(); } diff --git a/OpenMetaverse.Tests/NotationLLSDTests.cs b/OpenMetaverse.Tests/NotationLLSDTests.cs index 729e48dd..b218c44f 100644 --- a/OpenMetaverse.Tests/NotationLLSDTests.cs +++ b/OpenMetaverse.Tests/NotationLLSDTests.cs @@ -396,7 +396,7 @@ namespace OpenMetaverse.Tests string sUriOne = "l\"http://test.com/test test>\\\"/&yes\""; OSD llsdOne = OSDParser.DeserializeLLSDNotation(sUriOne); Assert.AreEqual(OSDType.URI, llsdOne.Type); - Assert.AreEqual("http://test.com/test test>\"/&yes", llsdOne.AsString()); + Assert.AreEqual("http://test.com/test%20test%3E%22/&yes", llsdOne.AsString()); string sUriTwo = "l\"test/test/test?test=1&toast=2\""; OSD llsdTwo = OSDParser.DeserializeLLSDNotation(sUriTwo);