使用响应标头调用REST API内容编码gzip与RestSharp导致问题。如果我使用Visual Studio将代码作为简单的ConsoleApplication执行,则没有问题,因此只有Unity无法处理此问题。任何有想法的人?unity3d - System.DllNotFoundException:使用内容编码调用REST API时的MonoPosixHelper gzip
var client = new RestClient("http://rest.sandbox-immobilienscout24.de");
var request = new RestRequest("/restapi/api/search/v1.0/search/region", Method.GET);
client.ClearHandlers();
request.AddQueryParameter("realestatetype", realestatetype);
request.AddQueryParameter("geocodes", geocodes);
request.AddHeader("Accept", "application/json");
request.AddHeader("Systemauthorization", "blabla");
IRestResponse response = client.Execute(request);
Debug.Log("search:" +response.ErrorException);
响应头:
Cache-Control →private
Content-Encoding →gzip
Content-Type →application/json;charset=UTF-8
Date →Sun, 06 Nov 2016 14:21:03 GMT
Expires →Thu, 01 Jan 1970 01:00:00 CET
L-IS24-ApiClient →blaKey
L-IS24-RequestRefnum →06be3d11-6526-4664-acd1-0787dbd7d1f6
Server →Apache
Transfer-Encoding →chunked
Vary →Accept-Encoding
例外:
search:System.Net.WebException: MonoPosixHelper ---> System.DllNotFoundException: MonoPosixHelper
at (wrapper managed-to-native) System.IO.Compression.DeflateStream:CreateZStream (System.IO.Compression.CompressionMode,bool,System.IO.Compression.DeflateStream/UnmanagedReadOrWrite,intptr)
at System.IO.Compression.DeflateStream..ctor (System.IO.Stream compressedStream, CompressionMode mode, Boolean leaveOpen, Boolean gzip) [0x00000] in <filename unknown>:0
at (wrapper remoting-invoke-with-check) System.IO.Compression.DeflateStream:.ctor (System.IO.Stream,System.IO.Compression.CompressionMode,bool,bool)
at System.IO.Compression.GZipStream..ctor (System.IO.Stream compressedStream, CompressionMode mode, Boolean leaveOpen) [0x00000] in <filename unknown>:0
at System.IO.Compression.GZipStream..ctor (System.IO.Stream compressedStream, CompressionMode mode) [0x00000] in <filename unknown>:0
at (wrapper remoting-invoke-with-check) System.IO.Compression.GZipStream:.ctor (System.IO.Stream,System.IO.Compression.CompressionMode)
at System.Net.HttpWebResponse..ctor (System.Uri uri, System.String method, System.Net.WebConnectionData data, System.Net.CookieContainer container) [0x00000] in <filename unknown>:0
at (wrapper remoting-invoke-with-check) System.Net.HttpWebResponse:.ctor (System.Uri,string,System.Net.WebConnectionData,System.Net.CookieContainer)
at System.Net.HttpWebRequest.SetResponseData (System.Net.WebConnectionData data) [0x00000] in <filename unknown>:0
--- End of inner exception stack trace ---
at System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult) [0x00000] in <filename unknown>:0
at System.Net.HttpWebRequest.GetResponse() [0x00000] in <filename unknown>:0
at RestSharp.Http.GetRawResponse (System.Net.HttpWebRequest request) [0x00000] in <filename unknown>:0
UnityEngine.Debug:Log(Object)
ApiClient:callSearchApi(String, String) (at Assets/ApiClient.cs:33)
ApiClient:Start() (at Assets/ApiClient.cs:12)
谢谢,但我怎么能详细地做到这一点?我需要在Unity中做什么? – fmielke
我改变我的答案,检查链接 –
这意味着我不能使用RestSharp? – fmielke