Рендеринг объекта холста, полученного от реквизита

Отправка данных на сервер с использованием метода POST Uri.Builder для создания запроса String.Как следует

Uri.Builder builder = new Uri.Builder()
        .appendQueryParameter("firstParam", paramValue1)
        .appendQueryParameter("secondParam", paramValue2)
String query = builder.build().getEncodedQuery();

Для вашего вопроса ваш почтовый метод будет выглядеть следующим образом

try {
        URL url = new URL("http://192.168.172.2/foods/insert.php");
        HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
        conn.setReadTimeout(10000);     //change according to need 
        conn.setConnectTimeout(15000);  //change according to need 
        conn.setRequestMethod("POST");
        conn.setDoInput(true);
        conn.setDoOutput(true);

        Uri.Builder builder = new Uri.Builder()
                .appendQueryParameter("name", name)
                .appendQueryParameter("category", category)
                .appendQueryParameter("quantity", quantity);
        String query = builder.build().getEncodedQuery();

        OutputStream os = conn.getOutputStream();
        BufferedWriter writer = new BufferedWriter(
                new OutputStreamWriter(os, "UTF-8"));
        writer.write(query);
        writer.flush();
        writer.close();
        os.close();

        conn.connect();

        //get response from server
        String response = conn.getResponseMessage();
        Log.d("URl->", response);

    } catch (IOException e) {
        e.printStackTrace();
    }

Я надеюсь, что его работа для вас

2
задан NoobNewb 18 January 2019 в 21:27
поделиться

1 ответ

Эта конкретная библиотека работает особым образом (похоже, она делает много «волшебства» под капотом - вам следует взглянуть на исходный код здесь , более конкретно на папку рендерера внутри src) [115 ]

Сохранение холста в состоянии внутри массива (правильный способ реагирования на действия) будет проблемой, поскольку он сохраняет его как сложный объект со многими методами и т. Д. ... и мы не можем визуализировать объекты. . Эта библиотека не была написана с учетом React ...

Пример кода ниже представляет собой простую реализацию в React ...

Вот живая демонстрация: https://codesandbox.io/s/9y24vwn1py

import React, { Component } from 'react';
import html2canvas from 'html2canvas';

class App extends Component {
  constructor(props) {
    super(props);
    this.captureRef = React.createRef();
    this.displayRef = React.createRef();
  }

  getScreenshotHandler = () => {
    html2canvas(this.captureRef.current).then(canvas =>
      this.displayRef.current.appendChild(canvas),
    );
  };

  render() {
    return (
      <div>
        <div ref={this.captureRef}>
          <h2>This enitre div will be captured and added to the screen</h2>
        </div>
        <button onClick={this.getScreenshotHandler}>Get Screenshot!</button>
        <section>
          <h5>Your screenshots will be availbale below</h5>
          <div ref={this.displayRef} />
        </section>
      </div>
    );
  }
}

export default App;

РЕДАКТИРОВАТЬ: на основе комментария ниже приведен еще один обходной путь:

class App extends Component {
  constructor(props) {
    super(props);
    this.state = { canvasArray: [] };
    this.captureRef = React.createRef();
  }

  getScreenshotHandler = () => {
    html2canvas(this.captureRef.current).then(canvas =>
      this.setState({
        canvasArray: [canvas.toDataURL(), ...this.state.canvasArray],
      }),
    );
  };

  renderCanvas = () => {
    return this.state.canvasArray.map((canvas, i) => {
      return <img key={i} src={canvas} alt="screenshot" />;
    });
  };

  render() {
    return (
      <div className="wrapper">
        <div ref={this.captureRef}>
          <p>This enitre div will be captured</p>
        </div>
        <button onClick={this.getScreenshotHandler}>Get Screenshot!</button>
        <section>
          <h5>Your screenshots will be availbale below:</h5>
          {this.renderCanvas()}
        </section>
      </div>
    );
  }
}

Ссылка на демонстрационный ролик: https://codesandbox.io/s/1r213057vq

0
ответ дан SakoBu 18 January 2019 в 21:27
поделиться
Другие вопросы по тегам:

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