Google Search Appliance Security User Manual
Page 41

41
request
.
ContentType
=
"application/x-www-form-urlencoded";
ServicePointManager
.
ServerCertificateValidationCallback
=
new
System
.
Net
.
Security
.
RemoteCertificateValidationCallback
(
AcceptAllCertifications
);
request
.
Proxy
=
WebRequest
.
DefaultWebProxy;
request
.
CookieContainer
=
new
CookieContainer
();
if
(
_gsaSessionId
!=
null)
{
request
.
CookieContainer
.
Add
(
new
Cookie
(
GSA_SESSION_ID
,
_gsaSessionId
)
{
Domain
=
_gsaHostName
});
}
else
{
string
authInfo
=
_trustedUser
+
":"
+
_trustedPwd;
authInfo
=
Convert
.
ToBase64String
(
Encoding
.
Default
.
GetBytes
(
authInfo
));
request
.
Headers
[
"Authorization"
]
=
"Basic "
+
authInfo;
}
request
.
Proxy
.
Credentials
=
CredentialCache
.
DefaultCredentials;
((
HttpWebRequest
)
request
).
KeepAlive
=
true;
//specific to the end user
String
strRsps
=
null;
request
.
Headers
[
"X_GSA_USER"
]
=
_endUser;
request
.
Headers
[
"X_GSA_CREDENTIAL_GROUP"
]
=
_credentialGroup;
//"X_GSA_USER: usera1" --header "X_GSA_CREDENTIAL_GROUP: Default" -d "access=a&q=
byte
[]
byteData
=
UTF8Encoding
.
UTF8
.
GetBytes
(
q
);
request
.
ContentLength
=
byteData
.
Length;
try
{
using
(
Stream
postStream
=
request
.
GetRequestStream
())
{
postStream
.
Write
(
byteData
,
0
,
byteData
.
Length
);
postStream
.
Close
();
}
HttpWebResponse
response
=
(
HttpWebResponse
)
request
.
GetResponse
();
if
(
_gsaSessionId
==
null)
{
_gsaSessionId
=
response
.
Cookies
[
"GSA_SESSION_ID"
].
Value;
}
StreamReader
rsps
=
new
StreamReader
(
request
.
GetResponse
().
GetResponseStream
());
strRsps
=
rsps
.
ReadToEnd
();
rsps
.
Close
();
response
.
Close
();
}
catch
(
WebException
e)
{
if
(
e
.
Status
==
WebExceptionStatus
.
ProtocolError)
{
WebResponse
resp
=
e
.
Response;
using
(
StreamReader
sr
=
new
StreamReader
(
resp
.
GetResponseStream
()))
{
Console
.
Write
(
sr
.
ReadToEnd
());
}
}
if
(
iRetry
==
0)
{
//assume session timed out
_gsaSessionId
=
null;