Вы предоставляете учетные данные в экземпляре URLRequest
, например, в Swift 3:
let username = "user"
let password = "pass"
let loginString = String(format: "%@:%@", username, password)
let loginData = loginString.data(using: String.Encoding.utf8)!
let base64LoginString = loginData.base64EncodedString()
// create the request
let url = URL(string: "http://www.example.com/")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Basic \(base64LoginString)", forHTTPHeaderField: "Authorization")
// fire off the request
// make sure your class conforms to NSURLConnectionDelegate
let urlConnection = NSURLConnection(request: request, delegate: self)
Или в NSMutableURLRequest
в Swift 2:
// set up the base64-encoded credentials
let username = "user"
let password = "pass"
let loginString = NSString(format: "%@:%@", username, password)
let loginData: NSData = loginString.dataUsingEncoding(NSUTF8StringEncoding)!
let base64LoginString = loginData.base64EncodedStringWithOptions([])
// create the request
let url = NSURL(string: "http://www.example.com/")
let request = NSMutableURLRequest(URL: url)
request.HTTPMethod = "POST"
request.setValue("Basic \(base64LoginString)", forHTTPHeaderField: "Authorization")
// fire off the request
// make sure your class conforms to NSURLConnectionDelegate
let urlConnection = NSURLConnection(request: request, delegate: self)
Когда вы запускаете Edge (как минимум), создаются два процесса: MicrosoftEdge и MicrosoftEdgeCP.
Вы можете попытаться использовать следующий код, чтобы проверить, открыт ли браузер Edge:
//We need to find the most recent MicrosoftEdgeCP process that is active
Process[] EdgeCPProcessList = Process.GetProcessesByName("MicrosoftEdgeCP");
Process newestEdgeCPProcess = null;
foreach (Process theprocess in EdgeCPProcessList)
{
if (newestEdgeCPProcess == null || theprocess.StartTime > newestEdgeCPProcess.StartTime)
{
newestEdgeCPProcess = theprocess;
Console.WriteLine("EdgeCP Process: "+theprocess.ProcessName.ToString());
}
}
Process[] edgeProcessList = Process.GetProcessesByName("MicrosoftEdge");
Process newestEdgeProcess = null;
foreach (Process edgeProcess in edgeProcessList)
{
if (newestEdgeProcess == null || edgeProcess.StartTime > newestEdgeProcess.StartTime)
{
newestEdgeProcess = edgeProcess;
Console.WriteLine("Edge Process: " + edgeProcess.ProcessName.ToString());
}
}
Console.ReadKey();
Если мы можем получить ProcessName, значит Edge уже открыт. Приведенный выше код хорошо работает на моей стороне.