هل هناك أي شيء يشبه httpurlconnection في بيرل؟
-
12-09-2019 - |
سؤال
أريد إنشاء جهاز httpurlconnection إلى برنامج نصي PHP واحصل على استجابة HTTP التي تم إرجاعها بواسطة البرنامج النصي. هل هناك طريقة للقيام بذلك في بيرل؟
باختصار أريد أن يعادل بيرل التالية:
java.net.URL url = new java.net.URL(urlPath);
java.net.HttpURLConnection conn = (java.net.HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
conn.setRequestProperty("content-type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Content-Length", Integer.toString(body.length()));
conn.setRequestProperty("Cookie", "ONTCred=" + cookie);
conn.connect();
java.io.PrintWriter pw = new java.io.PrintWriter(conn.getOutputStream());
pw.print(body); // "send" the body
pw.flush();
pw.close();
if (conn.getResponseCode() != java.net.HttpURLConnection.HTTP_OK) {
throw new java.io.IOException("Error on POST to " + url + ": " + conn.getResponseMessage());
}
// for debugging, if you want to see the header info, uncomment this section
// for (String key : conn.getHeaderFields().keySet()) {
// System.out.println("header: '" + key + "' = '" + conn.getHeaderField(key) + "'");
// }
أحاول البحث في وحدة بيرل مماثلة، لكن لا يمكن العثور على أي. أي مساعدة ستكون ذات صلة كبيرة.
المحلول
يحاول LWP.:
# Create a user agent object
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
# Create a request
my $req = HTTP::Request->new(POST => $url);
$req->content_type('application/x-www-form-urlencoded');
# cookies
$ua->cookie_jar({ file => "$ENV{HOME}/.cookies.txt" });
# Pass request to the user agent and get a response back
my $res = $ua->request($req);
# Check the outcome of the response
if ($res->is_success) {
print $res->content;
} else {
print $res->status_line, "\n";
}
نصائح أخرى
اعتمادا على ما هي أهدافك، www :: ميكانيكية قد يكون مناسبا أفضل.
لا تنتمي إلى StackOverflow