है, मेरे पास एक आरईएसटी सेवा है जो एक फ़ाइल पढ़ती है और इसे बाइट सरणी में परिवर्तित करने के बाद और फिर 6464 स्ट्रिंग में कनवर्ट करने के बाद इसे किसी अन्य कंसोल एप्लिकेशन पर भेजती है। यह हिस्सा सही होता है लेकिन जब एप्लिकेशन पर एक ही स्ट्रीम प्राप्त होती है, तो यह छेड़छाड़ हो जाती है और अब कोई वैध बेस 64 स्ट्रिंग नहीं होती है। कुछ जंक पात्र धारा में पेश किए जा रहे हैं।इनपुट मान्य बेस -64 स्ट्रिंग नहीं है क्योंकि इसमें गैर-बेस 64 वर्ण
धारा को वापस बाइट में कनवर्ट करते समय मुझे प्राप्त अपवाद है "इनपुट मान्य बेस -64 स्ट्रिंग नहीं है क्योंकि इसमें गैर-बेस 64 वर्ण, दो से अधिक पैडिंग वर्ण, या गैर-सफेद पैडिंग वर्णों के बीच अंतरिक्ष चरित्र "।
सेवा में:
[WebGet(UriTemplate = "ReadFile/Convert", ResponseFormat = WebMessageFormat.Json)]
public string ExportToExcel()
{
string filetoexport = "D:\\SomeFile.xls";
byte[] data = File.ReadAllBytes(filetoexport);
var s = Convert.ToBase64String(data);
return s;
}
आवेदन पर:
var client = new RestClient("http://localhost:56877/User/");
var request = new RestRequest("ReadFile/Convert", RestSharp.Method.GET);
request.AddHeader("Accept", "application/Json");
request.AddHeader("Content-Type", "application/Json");
request.OnBeforeDeserialization = resp => {resp.ContentType = "application/Json";};
var result = client.Execute(request);
byte[] d = Convert.FromBase64String(result.Content);
शायद यह 'Encoding' से कोई लेना देना नहीं है। –
क्या आप जानते हैं कि "जंक कैरेक्टर" क्या डाले जा रहे हैं? –
अद्यतन कोड सहायक है। अब हमें आपके द्वारा भेजी गई स्ट्रिंग (यानी सेवा पर 's ') और प्राप्त सामग्री (यानी' result.content') देखने की आवश्यकता है। आपको पूरी स्ट्रिंग पोस्ट करने की आवश्यकता नहीं है, केवल पहले उलझन वाले चरित्र तक (या, यदि यह अभी भी बहुत लंबा है, तो कुछ सबस्ट्रिंग जो दिखाती हैं कि क्या भेजा गया था और क्या प्राप्त हुआ था) –