Я согласен с ответом от zacherates.
Но вы можете сделать вызов intern () в ваших нелиберальных строках.
Из примера zacherates:
// ... but they are not the same object
new String("test") == "test" ==> false
Если вы ставите нелитеральное равенство строки, это правда
new String("test").intern() == "test" ==> true
Я бы посоветовал вам попробовать следующее:
public class WebClientEx : WebClient
{
private CookieContainer _cookieContainer = new CookieContainer();
protected override WebRequest GetWebRequest(Uri address)
{
WebRequest request = base.GetWebRequest(address);
if (request is HttpWebRequest)
{
(request as HttpWebRequest).CookieContainer = _cookieContainer;
}
return request;
}
}
class Program
{
static void Main()
{
using (var client = new WebClientEx())
{
var response1 = client.DownloadString("https://myJazzServer.com:9092/jazz/authenticated/identity");
var data = new NameValueCollection
{
{ "j_username", "myUser" },
{ "j_password", "MyPass" },
};
var response2 = client.UploadValues("https://myJazzServer.com:9092/jazz/authenticated/j_security_check", data);
Console.WriteLine(Encoding.Default.GetString(response2));
}
}
}
Также для упрощения отладки вы можете активировать трассировку, поместив это в свой app.config:
<configuration>
<system.diagnostics>
<sources>
<source name="System.Net.Sockets" tracemode="protocolonly">
<listeners>
<add name="System.Net.Sockets" type="System.Diagnostics.TextWriterTraceListener" initializeData="network.log" />
</listeners>
</source>
</sources>
<switches>
<add name="System.Net.Sockets" value="Verbose"/>
</switches>
<trace autoflush="true" />
</system.diagnostics>
</configuration>
Это создаст подробный файл журнала для сетевая активность, которая может упростить отладку.