إعداد وكيل المستخدم الخاص بـ java URLConnection



1 Answers

فقط للتوضيح: setRequestProperty يعمل على ما يرام! على الأقل مع Java 1.6.30.

لقد استمعت على جهازي مع netcat (مستمع منفذ):

$ nc -l -p 8080

يستمع ببساطة على المنفذ ، بحيث ترى أي شيء يتم طلبه ، مثل رؤوس HTTP الأولية.

وحصلت على رؤوس http التالية دون setRequestProperty:

GET /foobar HTTP/1.1
User-Agent: Java/1.6.0_30
Host: localhost:8080
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive

و مع setRequestProperty:

GET /foobar HTTP/1.1
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2
Host: localhost:8080
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive

كما ترى ، تم تعيين وكيل المستخدم بشكل صحيح.

مثال كامل:

import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;


public class TestUrlOpener {

    public static void main(String[] args) throws IOException {
        URL url = new URL("http://localhost:8080/foobar");
        URLConnection hc = url.openConnection();
        hc.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2");

        System.out.println(hc.getContentType());
    }

}
Question

أحاول تحليل صفحة ويب باستخدام جافا مع URLConnection. أحاول إعداد وكيل المستخدم على هذا النحو:

java.net.URLConnection c = url.openConnection();
c.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2");

ولكن وكيل المستخدم الناتج هو الذي أحدده ، مع إضافة "Java / 1.5.0_19" إلى النهاية. هل هناك طريقة لتعيين وكيل المستخدم بدون هذه الإضافة؟




عملها لي تعيين عامل المستخدم في addRequestProperty.

URL url = new URL(<URL>);
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.addRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0");



Related