C# 将代码从.NetFramework 3.5转换为Xamarin PCL
我有以下代码在一个项目中运行良好,我可以在Android中引用它,但不能在UWP中引用。这就是为什么我想把代码转换成我的PCL项目C# 将代码从.NetFramework 3.5转换为Xamarin PCL,c#,android,xamarin,uwp,portable-class-library,C#,Android,Xamarin,Uwp,Portable Class Library,我有以下代码在一个项目中运行良好,我可以在Android中引用它,但不能在UWP中引用。这就是为什么我想把代码转换成我的PCL项目 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.IO; namespace NetScraperLibrary { public class NetScraper { pu
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
namespace NetScraperLibrary
{
public class NetScraper
{
public NetScraper()
{
}
public ScrapedPage GetPage(string uri)
{
string strWebPage = "";
// create request
System.Net.WebRequest objRequest = System.Net.HttpWebRequest.Create(uri);
// get response
System.Net.HttpWebResponse objResponse;
objResponse = (System.Net.HttpWebResponse)objRequest.GetResponse();
// get correct charset and encoding from the server's header
string Charset = objResponse.CharacterSet;
Encoding encoding = Encoding.GetEncoding(Charset);
// read response into memory stream
MemoryStream memoryStream;
using (Stream responseStream = objResponse.GetResponseStream())
{
memoryStream = new MemoryStream();
byte[] buffer = new byte[1024];
int byteCount;
do
{
byteCount = responseStream.Read(buffer, 0, buffer.Length);
memoryStream.Write(buffer, 0, byteCount);
} while (byteCount > 0);
}
// set stream position to beginning
memoryStream.Seek(0, SeekOrigin.Begin);
StreamReader sr = new StreamReader(memoryStream, encoding);
strWebPage = sr.ReadToEnd();
// Check real charset meta-tag in HTML
int CharsetStart = strWebPage.IndexOf("charset=");
if (CharsetStart > 0)
{
CharsetStart += 8;
int CharsetEnd = strWebPage.IndexOfAny(new[] { ' ', '\"', ';' }, CharsetStart);
string RealCharset =
strWebPage.Substring(CharsetStart, CharsetEnd - CharsetStart);
// real charset meta-tag in HTML differs from supplied server header???
if (RealCharset != Charset)
{
// get correct encoding
Encoding CorrectEncoding = Encoding.GetEncoding(RealCharset);
// reset stream position to beginning
memoryStream.Seek(0, SeekOrigin.Begin);
// reread response stream with the correct encoding
StreamReader sr2 = new StreamReader(memoryStream, CorrectEncoding);
strWebPage = sr2.ReadToEnd();
// Close and clean up the StreamReader
sr2.Close();
}
}
// dispose the first stream reader object
sr.Close();
ScrapedPage page = new ScrapedPage(uri, strWebPage);//sb.ToString());
return page;
}
}
}
主要的问题是,objResponse.CharacterSet
不存在,非常奇怪?
同时关闭streams
sr2.Close();高级关闭()代码>。最后,不能再同步调用webresponse了。有谁能帮我解决转换中缺少的这些功能,因为我还没有弄清楚?Xamarin正在转向.NET标准2.0支持。你应该放弃PCL,也搬到那个新平台上去。@LexLi似乎.NET标准2.0还没有真正准备好,或者我遗漏了一些信息吗?@JTIM如果你等几周,它就会准备好:-)@karann MSFT我觉得这个挑逗者应该有更多的信息?[非常兴奋!]@karann MSFT有更新吗?还是问题的答案?Xamarin正在转向.NET标准2.0支持。你应该放弃PCL,也搬到那个新平台上去。@LexLi似乎.NET标准2.0还没有真正准备好,或者我遗漏了一些信息吗?@JTIM如果你等几周,它就会准备好:-)@karann MSFT我觉得这个挑逗者应该有更多的信息?[非常兴奋!]@karann MSFT有更新吗?还是问题的答案?