Проект Android, использующий httpclient-> http.client (апач), отправьте/получите метод

Поскольку у вас есть возвраты в обратном направлении, т. Е. Если он недействителен, верните ноль.

Если вы следили за героями в документах. есть двойные негативы ..

** A hero's name can't match the given regular expression */
export function forbiddenNameValidator(nameRe: RegExp): ValidatorFn {
  return (control: AbstractControl): {[key: string]: any} | null => {
    const forbidden = nameRe.test(control.value);
    return forbidden ? {'forbiddenName': {value: control.value}} : null;
  };
}

запрещено - потому что оно не может соответствовать регулярному выражению.

(тест на регулярное выражение вернул бы true для совпадения)

Вот один из моих примеров:

export function min(min: Number): ValidatorFn {
    return (control: AbstractControl): {[key: string]: any} => {
      const input = control.value,
      isValid = input < min;
      if(isValid) 
          return { 'minValue': {min} }
      else 
          return null;
    };
}

Дайте мне знать, если это поможет.

9
задан Ali Khaki 12 January 2019 в 08:48
поделиться

3 ответа

Самый простой способ ответить на мой вопрос - показать вам созданный мною класс:

public class HTTPHelp{

    DefaultHttpClient httpClient = new DefaultHttpClient();
    HttpContext localContext = new BasicHttpContext();
    private boolean abort;
    private String ret;

    HttpResponse response = null;
    HttpPost httpPost = null;

    public HTTPHelp(){

    }

    public void clearCookies() {

        httpClient.getCookieStore().clear();

    }

    public void abort() {

        try {
            if(httpClient!=null){
                System.out.println("Abort.");
                httpPost.abort();
                abort = true;
            }
        } catch (Exception e) {
            System.out.println("HTTPHelp : Abort Exception : "+e);
        }
    }

    public String postPage(String url, String data, boolean returnAddr) {

        ret = null;

        httpClient.getParams().setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.RFC_2109);

        httpPost = new HttpPost(url);
        response = null;

        StringEntity tmp = null;        

        httpPost.setHeader("User-Agent", "Mozilla/5.0 (X11; U; Linux " +
            "i686; en-US; rv:1.8.1.6) Gecko/20061201 Firefox/2.0.0.6 (Ubuntu-feisty)");
        httpPost.setHeader("Accept", "text/html,application/xml," +
            "application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5");
        httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded");

        try {
            tmp = new StringEntity(data,"UTF-8");
        } catch (UnsupportedEncodingException e) {
            System.out.println("HTTPHelp : UnsupportedEncodingException : "+e);
        }

        httpPost.setEntity(tmp);

        try {
            response = httpClient.execute(httpPost,localContext);
        } catch (ClientProtocolException e) {
            System.out.println("HTTPHelp : ClientProtocolException : "+e);
        } catch (IOException e) {
            System.out.println("HTTPHelp : IOException : "+e);
        } 
                ret = response.getStatusLine().toString();

                return ret;
                }
}

Я использовал этот учебник для выполнения моего метода публикации и этих примеры

8
ответ дан 4 December 2019 в 06:41
поделиться

Что ж, вы можете найти документацию по этой версии HTTPClient здесь ; особенно полезно просмотреть примерные сценарии , которые они представляют.

К сожалению, я не знаю версию 3 HTTPClient , поэтому я не могу дать прямые эквиваленты; Я предлагаю вам взять то, что вы пытаетесь сделать, и просмотреть их примеры сценариев.

3
ответ дан 4 December 2019 в 06:41
поделиться

Вот в httpClient 4 Docs , то есть какой Android использует (4, а не 3, поскольку 1,0-> 2.x). Документы трудно найти (спасибо Apache;)) Потому что httpClient теперь является частью httpComponents (и если вы просто ищете httpClient, вы обычно заканчиваете на веществе 3.x).

Кроме того, если вы выполните любое количество запросов, которые вы не хотите создавать клиента снова и снова. Скорее, как учебники для HTTPClient Note , создайте клиента один раз и сохраните его. Оттуда используются ThreadsafecnectionConeManager .

Я использую класс помощника, например, что-то вроде HTTPhelper (который все еще является движущейся целью - я планирую переместить это на свой собственный проект Android Util в какой-то момент, и поддерживать двоичные данные, Haven ' T еще не договорился), чтобы помочь с этим. Класс HELPER создает клиент и имеет удобные методы обертки для Get / Post / etc. Где вы используете этот класс из активности , вы должны создать внутреннюю внутреннюю Asynctask (так, что вы не блокируете нить пользовательского интерфейса при выполнении запроса), например:

    private class GetBookDataTask extends AsyncTask<String, Void, Void> {
      private ProgressDialog dialog = new ProgressDialog(BookScanResult.this);

      private String response;
      private HttpHelper httpHelper = new HttpHelper();

      // can use UI thread here
      protected void onPreExecute() {
         dialog.setMessage("Retrieving HTTP data..");
         dialog.show();
      }

      // automatically done on worker thread (separate from UI thread)
      protected Void doInBackground(String... urls) {
         response = httpHelper.performGet(urls[0]);
         // use the response here if need be, parse XML or JSON, etc
         return null;
      }

      // can use UI thread here
      protected void onPostExecute(Void unused) {
         dialog.dismiss();
         if (response != null) {
            // use the response back on the UI thread here
            outputTextView.setText(response);
         }
      }
   }
23
ответ дан 4 December 2019 в 06:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: